From 84d015c7940a0667a5e5a1909139cfef69ec9032 Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Mon, 30 Mar 2026 20:05:24 +0200 Subject: [PATCH 01/19] snake_case naming --- tests/{Distributed_mode_calib.py => distributed_mode_calib.py} | 0 tests/{Distributed_mode_run.py => distributed_mode_run.py} | 0 tests/{Lumped_Calibration.py => lumped_calibration.py} | 0 tests/{Lumped_Run.py => lumped_run.py} | 0 tests/{SensitivityAnalysis.py => sensitivity_analysis.py} | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename tests/{Distributed_mode_calib.py => distributed_mode_calib.py} (100%) rename tests/{Distributed_mode_run.py => distributed_mode_run.py} (100%) rename tests/{Lumped_Calibration.py => lumped_calibration.py} (100%) rename tests/{Lumped_Run.py => lumped_run.py} (100%) rename tests/{SensitivityAnalysis.py => sensitivity_analysis.py} (100%) diff --git a/tests/Distributed_mode_calib.py b/tests/distributed_mode_calib.py similarity index 100% rename from tests/Distributed_mode_calib.py rename to tests/distributed_mode_calib.py diff --git a/tests/Distributed_mode_run.py b/tests/distributed_mode_run.py similarity index 100% rename from tests/Distributed_mode_run.py rename to tests/distributed_mode_run.py diff --git a/tests/Lumped_Calibration.py b/tests/lumped_calibration.py similarity index 100% rename from tests/Lumped_Calibration.py rename to tests/lumped_calibration.py diff --git a/tests/Lumped_Run.py b/tests/lumped_run.py similarity index 100% rename from tests/Lumped_Run.py rename to tests/lumped_run.py diff --git a/tests/SensitivityAnalysis.py b/tests/sensitivity_analysis.py similarity index 100% rename from tests/SensitivityAnalysis.py rename to tests/sensitivity_analysis.py From 21332022ece0fb339b2fcf2fdbeacef0811707ef Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Mon, 30 Mar 2026 20:06:11 +0200 Subject: [PATCH 02/19] snake_case naming --- tests/rrm/calibration/test_rrm_calibration.py | 6 +++--- tests/rrm/data/jiboa/lake-parameters.txt | 2 +- tests/rrm/test_rrm_inputs.py | 1 - tests/test_dem.py | 6 +++--- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/tests/rrm/calibration/test_rrm_calibration.py b/tests/rrm/calibration/test_rrm_calibration.py index b3030ff18..861203cae 100644 --- a/tests/rrm/calibration/test_rrm_calibration.py +++ b/tests/rrm/calibration/test_rrm_calibration.py @@ -8,7 +8,7 @@ from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped -def test_ReadParametersBounds( +def test_read_parameters_bounds( coello_rrm_date: list, lower_bound: list, upper_bound: list, @@ -23,7 +23,7 @@ def test_ReadParametersBounds( assert isinstance(Coello.Maxbas, bool) -def test_LumpedCalibration( +def test_lumped_calibration( coello_rrm_date: list, lumped_meteo_data_path: str, coello_AreaCoeff: float, @@ -100,7 +100,7 @@ def test_create_calibration_instance( assert coello.routing_method == "Muskingum" assert isinstance(coello.start, dt.datetime) - def test_read_objective_Fn(self, coello_start_date: str, coello_end_date: str): + def test_read_objective_fn(self, coello_start_date: str, coello_end_date: str): coello = Calibration( "coello", coello_start_date, diff --git a/tests/rrm/data/jiboa/lake-parameters.txt b/tests/rrm/data/jiboa/lake-parameters.txt index 6ae05bfc5..127c4c854 100644 --- a/tests/rrm/data/jiboa/lake-parameters.txt +++ b/tests/rrm/data/jiboa/lake-parameters.txt @@ -10,4 +10,4 @@ 9.014181030000000261e-01 1.026166939999999972e+00 6.218353629999999743e-01 -1.720670460000000013e-01 \ No newline at end of file +1.720670460000000013e-01 diff --git a/tests/rrm/test_rrm_inputs.py b/tests/rrm/test_rrm_inputs.py index c7d219dd6..f4f3e0917 100644 --- a/tests/rrm/test_rrm_inputs.py +++ b/tests/rrm/test_rrm_inputs.py @@ -1,5 +1,4 @@ from pathlib import Path -from unittest.mock import patch import numpy as np from geopandas import GeoDataFrame diff --git a/tests/test_dem.py b/tests/test_dem.py index 56628ab83..c479aa1e7 100644 --- a/tests/test_dem.py +++ b/tests/test_dem.py @@ -3,21 +3,21 @@ from Hapi.dem import DEM -def test_flowDirectionIndex(coello_df_4000: gdal.Dataset): +def test_flow_direction_index(coello_df_4000: gdal.Dataset): dem = DEM(coello_df_4000) fd_cell = dem.flow_direction_index() assert isinstance(fd_cell, np.ndarray) assert fd_cell.shape == (dem.rows, dem.columns, 2) -def test_flowDirectionTable(coello_df_4000: gdal.Dataset): +def test_flow_direction_table_shape(coello_df_4000: gdal.Dataset): dem = DEM(coello_df_4000) fd_cell = dem.flow_direction_table() assert isinstance(fd_cell, np.ndarray) assert fd_cell.shape == (dem.rows, dem.columns, 2) -def test_flowDirectionTable(coello_df_4000: gdal.Dataset, coello_fdt): +def test_flow_direction_table_values(coello_df_4000: gdal.Dataset, coello_fdt): dem = DEM(coello_df_4000) fd_table = dem.flow_direction_table() assert fd_table == coello_fdt From 12d48fc2b6169da2ef8abc8b8f124242bfb3712b Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Mon, 30 Mar 2026 20:19:49 +0200 Subject: [PATCH 03/19] reorganize tests --- tests/{ => calibration}/distributed_mode_calib.py | 0 tests/{ => calibration}/lumped_calibration.py | 0 tests/{ => run}/distributed_mode_run.py | 0 tests/{ => run}/lumped_run.py | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename tests/{ => calibration}/distributed_mode_calib.py (100%) rename tests/{ => calibration}/lumped_calibration.py (100%) rename tests/{ => run}/distributed_mode_run.py (100%) rename tests/{ => run}/lumped_run.py (100%) diff --git a/tests/distributed_mode_calib.py b/tests/calibration/distributed_mode_calib.py similarity index 100% rename from tests/distributed_mode_calib.py rename to tests/calibration/distributed_mode_calib.py diff --git a/tests/lumped_calibration.py b/tests/calibration/lumped_calibration.py similarity index 100% rename from tests/lumped_calibration.py rename to tests/calibration/lumped_calibration.py diff --git a/tests/distributed_mode_run.py b/tests/run/distributed_mode_run.py similarity index 100% rename from tests/distributed_mode_run.py rename to tests/run/distributed_mode_run.py diff --git a/tests/lumped_run.py b/tests/run/lumped_run.py similarity index 100% rename from tests/lumped_run.py rename to tests/run/lumped_run.py From 0b6de06444c0849e2b1411d3100cbf3fbc6faff7 Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Mon, 30 Mar 2026 20:20:44 +0200 Subject: [PATCH 04/19] reorganize tests --- tests/calibration/__init__.py | 0 tests/run/__init__.py | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/calibration/__init__.py create mode 100644 tests/run/__init__.py diff --git a/tests/calibration/__init__.py b/tests/calibration/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/run/__init__.py b/tests/run/__init__.py new file mode 100644 index 000000000..e69de29bb From 8090cec545ba88bb4f02a4929ac9736ea8355a01 Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Mon, 30 Mar 2026 20:31:23 +0200 Subject: [PATCH 05/19] reformat --- docs/change-log.md | 2 +- docs/dev/Installation.md | 2 +- docs/examples/distributed-model-calib.md | 2 +- docs/examples/distributed-model-run.md | 2 +- docs/examples/gis-inputs.md | 2 +- docs/examples/hbv.md | 2 +- docs/examples/lumped-model-calibration.md | 2 +- docs/examples/lumped-model-run.md | 2 +- docs/examples/meteo-inputs.md | 2 +- docs/examples/parameters.md | 2 +- ...boa-distributed-model-muskingum-lake.ipynb | 1250 ++--- .../Note books/Lumped-Model_Run.ipynb | 850 ++-- .../Note books/check-03Jiboa-colab.ipynb | 848 ++-- .../Note books/check-03Jiboa.ipynb | 562 +-- ...stributed-model-muskingum-lake-colab.ipynb | 848 ++-- .../Note books/check-colab/Jiboa.ipynb | 1156 ++--- ...ello-distributed-model-run-muskingum.ipynb | 4450 ++++++++--------- .../coello-lumped-model-run-muskingum.ipynb | 914 ++-- .../Note books/lumped-model-run-coello.ipynb | 856 ++-- ...stributed-model-calibratation-muskingum.py | 2 +- ...libration-deap-multiobjective-NSE-NSEHF.py | 2 +- ...alibration-deap-multiobjective-NSE-RMSE.py | 2 +- .../coello-lumped-model-calibration-deap.py | 2 +- .../coello-lumped-model-calibration.py | 2 +- ...stributed-model-calibratation-muskingum.py | 2 +- .../coello-distributed-model-run-maxbas.py | 2 +- .../run/coello-lumped-model-run-maxbas.py | 2 +- .../coello/run/coello-lumped-model-run.py | 2 +- .../02calib_model_HRU.py | 2 +- .../02calib_model_Lumped.py | 1 + examples/plot/image_plot.ipynb | 1428 +++--- src/Hapi/__init__.py | 10 +- src/Hapi/catchment.py | 6 +- src/Hapi/dem.py | 1 + src/Hapi/inputs.py | 5 +- src/Hapi/parameters/parameters.py | 2 +- src/Hapi/routing.py | 46 +- src/Hapi/rrm/distrrm.py | 2 +- src/Hapi/rrm/hbv.py | 8 +- src/Hapi/rrm/hbv_lake.py | 3 - src/Hapi/rrm/parameters.py | 1 + src/Hapi/run.py | 1 + src/Hapi/wrapper.py | 3 - tests/rrm/catchment/test_lake.py | 2 + tests/rrm/conftest.py | 1 + tests/rrm/test_dist_parameters.py | 1 + tests/test_dem.py | 1 + 47 files changed, 6643 insertions(+), 6653 deletions(-) diff --git a/docs/change-log.md b/docs/change-log.md index 2809a65cd..09cd8b822 100644 --- a/docs/change-log.md +++ b/docs/change-log.md @@ -74,4 +74,4 @@ ## 1.3.2 (2022-12-26) - Remove parameters from the package and retrieve them with the - parameter package. \ No newline at end of file + parameter package. diff --git a/docs/dev/Installation.md b/docs/dev/Installation.md index 0a90a353d..882b2a239 100644 --- a/docs/dev/Installation.md +++ b/docs/dev/Installation.md @@ -150,4 +150,4 @@ This should run without errors. https://Hapi.readthedocs.org/en/latest/ Documentation for the stable version: - https://Hapi.readthedocs.org/en/stable/ \ No newline at end of file + https://Hapi.readthedocs.org/en/stable/ diff --git a/docs/examples/distributed-model-calib.md b/docs/examples/distributed-model-calib.md index a5197913c..42c38bdb0 100644 --- a/docs/examples/distributed-model-calib.md +++ b/docs/examples/distributed-model-calib.md @@ -300,4 +300,4 @@ EndDate = "2010-04-20" Prefix = 'Qtot_' Coello.saveResults(FlowAccPath, Result=1, StartDate=StartDate, EndDate=EndDate, Path="F:/02Case studies/Coello/Hapi/Model/results/", Prefix=Prefix) -``` \ No newline at end of file +``` diff --git a/docs/examples/distributed-model-run.md b/docs/examples/distributed-model-run.md index c187ba6fa..7e0f5dcff 100644 --- a/docs/examples/distributed-model-run.md +++ b/docs/examples/distributed-model-run.md @@ -129,4 +129,4 @@ cal_parameters = Coello.runCalibration(SpatialVarFun, OptimizationArgs,printErro ```python SpatialVarFun.Function(Coello.Parameters, kub=SpatialVarFun.Kub, klb=SpatialVarFun.Klb) SpatialVarFun.saveParameters(SaveTo) -``` \ No newline at end of file +``` diff --git a/docs/examples/gis-inputs.md b/docs/examples/gis-inputs.md index 312021062..c2c72fcad 100644 --- a/docs/examples/gis-inputs.md +++ b/docs/examples/gis-inputs.md @@ -66,4 +66,4 @@ the following steps are done in QGIS this step we will multiply the DEM (5km) with the `Standardized_Burn.tif` raster - output will be the raster `DEM_Burn.tif` \ No newline at end of file + output will be the raster `DEM_Burn.tif` diff --git a/docs/examples/hbv.md b/docs/examples/hbv.md index 83dd41c40..26a0e06fc 100644 --- a/docs/examples/hbv.md +++ b/docs/examples/hbv.md @@ -93,4 +93,4 @@ Lakes have a significant impact on the dynamics of runoff process and the routin # References - Bergström, Sten. 1992. “The HBV Model - Its Structure and Applications.” Smhi Rh 4(4): 35. \ No newline at end of file + Bergström, Sten. 1992. “The HBV Model - Its Structure and Applications.” Smhi Rh 4(4): 35. diff --git a/docs/examples/lumped-model-calibration.md b/docs/examples/lumped-model-calibration.md index bd63a11e0..04bc76b63 100644 --- a/docs/examples/lumped-model-calibration.md +++ b/docs/examples/lumped-model-calibration.md @@ -84,4 +84,4 @@ To calibrate the HBV lumped model inside Hapi you need to follow the same steps print("Objective Function = " + str(round(cal_parameters[0],2))) print("Parameters are " + str(cal_parameters[1])) print("Time = " + str(round(cal_parameters[2]['time']/60,2)) + " min") -``` \ No newline at end of file +``` diff --git a/docs/examples/lumped-model-run.md b/docs/examples/lumped-model-run.md index 2faf65460..7695f0498 100644 --- a/docs/examples/lumped-model-run.md +++ b/docs/examples/lumped-model-run.md @@ -104,4 +104,4 @@ EndDate = "2010-04-20" Path = SaveTo + "Results-Lumped-Model" + str(dt.datetime.now())[0:10] + ".txt" Coello.saveResults(Result=5, StartDate=StartDate, EndDate=EndDate, Path=Path) -``` \ No newline at end of file +``` diff --git a/docs/examples/meteo-inputs.md b/docs/examples/meteo-inputs.md index e4802f8e4..dc8bc1bb6 100644 --- a/docs/examples/meteo-inputs.md +++ b/docs/examples/meteo-inputs.md @@ -110,4 +110,4 @@ Coello = RS(StartDate=StartDate, EndDate=EndDate, Time=Time, latlim=lat , lonlim=lon, Path=Path, Vars=variables) Coello.ECMWF(Waitbar=1) -``` \ No newline at end of file +``` diff --git a/docs/examples/parameters.md b/docs/examples/parameters.md index 91ead0402..afad79541 100644 --- a/docs/examples/parameters.md +++ b/docs/examples/parameters.md @@ -57,4 +57,4 @@ To extract the parameters from one of the ten scenarios developed to derive the # extract parameters in a specific scenarion from the 10 scenarios Par['1'] = IN.extractParameters(Basin,"01") ``` -the extracted parameters needs to be modified incase you are not considering the snow bucket the first 5 parameters are disregarded \ No newline at end of file +the extracted parameters needs to be modified incase you are not considering the snow bucket the first 5 parameters are disregarded diff --git a/examples/hydrological-model/Note books/Jiboa-distributed-model-muskingum-lake.ipynb b/examples/hydrological-model/Note books/Jiboa-distributed-model-muskingum-lake.ipynb index c829460ca..568f878d1 100644 --- a/examples/hydrological-model/Note books/Jiboa-distributed-model-muskingum-lake.ipynb +++ b/examples/hydrological-model/Note books/Jiboa-distributed-model-muskingum-lake.ipynb @@ -1,628 +1,628 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Jiboa Case Study" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This code is prepared to Run the distributed model for jiboa rover in El Salvador\n", - "wher the catchment is consisted os a ustream lake and a volcanic area\n", - "- you have to make the root directory to the examples folder to enable the code\n", - " from reading input files" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 1-Download Data\n", - "For the data of this case study you have to download this folder [Jiboa Data](https://drive.google.com/drive/folders/1yy6xWwx8Ucc-O72FgVxsuvJBdk3u0sVa?usp=sharing) from Google Drive and set it as the working directory instead of the Path defined in the next cell" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 2-Import modules" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "- please change the Path to the directory where you stored the case study data" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "\n", - "\n", - "root = \"E:\\case studies\\El Salvador\"\n", - "os.chdir(root)\n", - "\n", - "#libraries\n", - "import numpy as np\n", - "import datetime as dt\n", - "\n", - "# HAPI modules\n", - "from Hapi.run import Run\n", - "from Hapi.catchment import Catchment, Lake\n", - "import Hapi.rrm.hbv as HBV\n", - "import Hapi.rrm.hbv_lake as HBVLake\n", - "import Hapi.sm.performancecriteria as Pf" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 3-Meteorological Data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "- For Jiboa case study Hapi model was built for different spatial resolution (4km, 2km, 1km, and 500m )\n", - "- in the following cell you have to choose the resolution you want to use to run the model" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "res = 4000" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# the beginning of the simulation of the calibration data\n", - "PrecPath = \"inputs/Hapi/meteodata/\" + str(res) + \"/calib/prec_clipped\"\n", - "Evap_Path = \"inputs/Hapi/meteodata/\" + str(res) + \"/calib/evap_clipped\"\n", - "TempPath = \"inputs/Hapi/meteodata/\" + str(res) + \"/calib/temp_clipped\"\n", - "FlowAccPath = \"inputs/Hapi/GIS/\" + str(res) + \"_matched/acc\" + str(res) + \".tif\"\n", - "FlowDPath = \"inputs/Hapi/GIS/\" + str(res) + \"_matched/fd\" + str(res) + \".tif\"\n", - "ParPath = \"inputs/Hapi/meteodata/\" + str(res) + \"/parameters/\"\n", - "# Lake\n", - "LakeMeteoPath = \"inputs/Hapi/meteodata/lakedata.csv\"\n", - "LakeParametersPath = \"inputs/Hapi/meteodata/\" + str(res) + \"/Lakeparameters.txt\"\n", - "GaugesPath = \"inputs/Hapi/meteodata/Gauges/\"\n", - "SaveTo = \"results/\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 4-Distributed Model Object" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-19 23:32:59.351 | DEBUG | catchment:readRainfall:200 - Rainfall data are read successfully\n", - "2022-03-19 23:33:05.199 | DEBUG | catchment:readTemperature:253 - Temperature data are read successfully\n", - "2022-03-19 23:33:12.814 | DEBUG | catchment:readET:295 - Potential Evapotranspiration data are read successfully\n", - "2022-03-19 23:33:12.846 | DEBUG | catchment:readFlowAcc:387 - Flow Accmulation input is read successfully\n", - "2022-03-19 23:33:12.846 | DEBUG | catchment:readFlowDir:441 - Flow Direction input is read successfully\n", - "2022-03-19 23:33:12.877 | DEBUG | catchment:readParameters:624 - Parameters are read successfully\n", - "2022-03-19 23:33:12.877 | DEBUG | catchment:readLumpedModel:678 - Lumped model is read successfully\n" - ] - } - ], - "source": [ - "AreaCoeff = 227.31\n", - "InitialCond = np.loadtxt(\"inputs/Hapi/meteodata/Initia-jiboa.txt\", usecols=0).tolist()\n", - "Snow = 0\n", - "\n", - "start_date = '2012-06-14 19:00:00'\n", - "# Edate = '2014-11-17 00:00:00'\n", - "end_date = '2013-12-23 00:00:00'\n", - "name = \"Jiboa\"\n", - "Jiboa = Catchment(name, start_date, end_date, SpatialResolution=\"Distributed\",\n", - " TemporalResolution=\"Hourly\", fmt='%Y-%m-%d %H:%M:%S')\n", - "Jiboa.readRainfall(PrecPath)\n", - "Jiboa.readTemperature(TempPath)\n", - "Jiboa.readET(Evap_Path)\n", - "Jiboa.readFlowAcc(FlowAccPath)\n", - "Jiboa.readFlowDir(FlowDPath)\n", - "Jiboa.readParameters(ParPath, Snow)\n", - "\n", - "Jiboa.readLumpedModel(HBV, AreaCoeff, InitialCond)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 5-Lake Object" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For the Lake the following data is required \n", - "- lake meteorological data\n", - " mean rainfall, mean temperature, and mean evapotranspiration for the whole lake.\n", - "- connected cell to the distributed model :\n", - " ([row ,column] unfortunately for now you have to provide the cell indices however in future versions this requiremtn will be replaced by the coordinates of the lake outlet).\n", - "- Stage-Discharge rating curve :\n", - " so simulate the lake Hapi uses volume vs outflow ralationship to calculate the outflow from the lake, the internal lake sub-routine calculates the volume change for each time \n", - " step and using the curve the outflow can be obtained." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-19 23:33:53.060 | DEBUG | catchment:readMeteoData:1584 - Lake Meteo data are read successfully\n", - "2022-03-19 23:33:53.060 | DEBUG | catchment:readParameters:1603 - Lake Parameters are read successfully\n", - "2022-03-19 23:33:53.060 | DEBUG | catchment:readLumpedModel:1668 - Lumped model is read successfully\n" - ] - } - ], - "source": [ - "# where the lake discharges its flow (give the indices of the cell)\n", - "if res == 4000:\n", - " OutflowCell = [2, 1] # 4km\n", - "elif res == 2000:\n", - " OutflowCell = [4, 2] # 2km\n", - "elif res == 1000:\n", - " OutflowCell = [10, 4] # 1km\n", - "elif res == 500:\n", - " OutflowCell = [19, 10] # 500m\n", - "\n", - "start_date = '2012.06.14 19:00:00'\n", - "# Edate = '2014.11.17 00:00:00'\n", - "end_date = '2013.12.23 00:00:00'\n", - "\n", - "JiboaLake = Lake(start=start_date, end=end_date, fmt='%Y.%m.%d %H:%M:%S',\n", - " TemporalResolution=\"Hourly\", Split=True)\n", - "\n", - "JiboaLake.readMeteoData(LakeMeteoPath, fmt='%d.%m.%Y %H:%M')\n", - "JiboaLake.readParameters(LakeParametersPath)\n", - "\n", - "StageDischargeCurve = np.loadtxt(\"inputs/Hapi/meteodata/curve.txt\")\n", - "LakeInitCond = np.loadtxt(\"inputs/Hapi/meteodata/Initia-lake.txt\", usecols=0).tolist()\n", - "LakeCatArea = 133.98\n", - "LakeArea = 70.64\n", - "Snow = 0\n", - "JiboaLake.readLumpedModel(HBVLake, LakeCatArea, LakeArea, LakeInitCond,\n", - " OutflowCell, StageDischargeCurve, Snow)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 6-Gauges" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-19 23:33:58.759 | DEBUG | catchment:readGaugeTable:773 - Gauge Table is read successfully\n", - "2022-03-19 23:33:59.040 | DEBUG | catchment:readDischargeGauges:867 - Gauges data are read successfully\n" - ] - } - ], - "source": [ - "Date1 = '14.06.2012 19:00'\n", - "Date2 = '23.12.2013 00:00'\n", - "Jiboa.readGaugeTable(GaugesPath + \"GaugesTable.csv\", FlowAccPath)\n", - "Jiboa.readDischargeGauges(GaugesPath, column='id', fmt='%d.%m.%Y %H:%M',\n", - " Split=True, Date1=Date1, Date2=Date2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 7-Run the model" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model Run has finished\n" - ] - } - ], - "source": [ - "Run.runHAPIwithLake(Jiboa, JiboaLake)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## 8-Evaluate model performance" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "----------------------------------\n", - "Gauge - 1\n", - "RMSE= 1.93\n", - "NSE= 0.48\n", - "NSEhf= 0.44\n", - "KGE= 0.54\n", - "WB= 72.44\n", - "Pearson CC= 0.62\n", - "R2 = 0.48\n" - ] - } - ], - "source": [ - "Jiboa.extractDischarge(OnlyOutlet=True)\n", - "\n", - "for i in range(len(Jiboa.GaugesTable)):\n", - " gaugeid = Jiboa.GaugesTable.loc[i, 'id']\n", - " print(\"----------------------------------\")\n", - " print(\"Gauge - \" + str(gaugeid))\n", - " print(\"RMSE= \" + str(round(Jiboa.Metrics.loc['RMSE', gaugeid], 2)))\n", - " print(\"NSE= \" + str(round(Jiboa.Metrics.loc['NSE', gaugeid], 2)))\n", - " print(\"NSEhf= \" + str(round(Jiboa.Metrics.loc['NSEhf', gaugeid], 2)))\n", - " print(\"KGE= \" + str(round(Jiboa.Metrics.loc['KGE', gaugeid], 2)))\n", - " print(\"WB= \" + str(round(Jiboa.Metrics.loc['WB', gaugeid], 2)))\n", - " print(\"Pearson CC= \" + str(round(Jiboa.Metrics.loc['Pearson-CC', gaugeid], 2)))\n", - " print(\"R2 = \" + str(round(Jiboa.Metrics.loc['R2', gaugeid], 2)))" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'Calib_RMSEHF': 0.681, 'Calib_RMSELF': 1.143, 'Calib_NSEHf': 0.478, 'Calib_NSELf': -0.853, 'Calib_RMSE': 1.93, 'Calib_KGE': 0.542, 'Calib_WB': 72.445}\n" - ] - } - ], - "source": [ - "Qobs = Jiboa.QGauges[Jiboa.GaugesTable.loc[0, 'id']]\n", - "\n", - "gaugeid = Jiboa.GaugesTable.loc[0, 'id']\n", - "\n", - "WS = {}\n", - "WS['type'] = 1\n", - "WS['N'] = 3\n", - "ModelMetrics = dict()\n", - "ModelMetrics['Calib_RMSEHF'] = round(Pf.RMSEHF(Qobs, Jiboa.Qsim[gaugeid], WS['type'], WS['N'], 0.75), 3)\n", - "ModelMetrics['Calib_RMSELF'] = round(Pf.RMSELF(Qobs, Jiboa.Qsim[gaugeid], WS['type'], WS['N'], 0.75), 3)\n", - "ModelMetrics['Calib_NSEHf'] = round(Pf.NSE(Qobs, Jiboa.Qsim[gaugeid]), 3)\n", - "ModelMetrics['Calib_NSELf'] = round(Pf.NSE(np.log(Qobs), np.log(Jiboa.Qsim[gaugeid])), 3)\n", - "ModelMetrics['Calib_RMSE'] = round(Pf.RMSE(Qobs, Jiboa.Qsim[gaugeid]), 3)\n", - "ModelMetrics['Calib_KGE'] = round(Pf.KGE(Qobs, Jiboa.Qsim[gaugeid]), 3)\n", - "ModelMetrics['Calib_WB'] = round(Pf.WB(Qobs, Jiboa.Qsim[gaugeid]), 3)\n", - "\n", - "print(ModelMetrics)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 9-Plot Hydrograph" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1142 - ----------------------------------\n", - "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1143 - Gauge - 1\n", - "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1144 - RMSE= 1.93\n", - "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1145 - NSE= 0.48\n", - "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1146 - NSEhf= 0.44\n", - "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1147 - KGE= 0.54\n", - "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1148 - WB= 72.44\n", - "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1149 - Pearson-CC= 0.62\n", - "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1152 - R2= 0.48\n" - ] + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Jiboa Case Study" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This code is prepared to Run the distributed model for jiboa rover in El Salvador\n", + "wher the catchment is consisted os a ustream lake and a volcanic area\n", + "- you have to make the root directory to the examples folder to enable the code\n", + " from reading input files" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 1-Download Data\n", + "For the data of this case study you have to download this folder [Jiboa Data](https://drive.google.com/drive/folders/1yy6xWwx8Ucc-O72FgVxsuvJBdk3u0sVa?usp=sharing) from Google Drive and set it as the working directory instead of the Path defined in the next cell" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 2-Import modules" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- please change the Path to the directory where you stored the case study data" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "\n", + "root = \"E:\\case studies\\El Salvador\"\n", + "os.chdir(root)\n", + "\n", + "#libraries\n", + "import numpy as np\n", + "import datetime as dt\n", + "\n", + "# HAPI modules\n", + "from Hapi.run import Run\n", + "from Hapi.catchment import Catchment, Lake\n", + "import Hapi.rrm.hbv as HBV\n", + "import Hapi.rrm.hbv_lake as HBVLake\n", + "import Hapi.sm.performancecriteria as Pf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 3-Meteorological Data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- For Jiboa case study Hapi model was built for different spatial resolution (4km, 2km, 1km, and 500m )\n", + "- in the following cell you have to choose the resolution you want to use to run the model" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "res = 4000" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# the beginning of the simulation of the calibration data\n", + "PrecPath = \"inputs/Hapi/meteodata/\" + str(res) + \"/calib/prec_clipped\"\n", + "Evap_Path = \"inputs/Hapi/meteodata/\" + str(res) + \"/calib/evap_clipped\"\n", + "TempPath = \"inputs/Hapi/meteodata/\" + str(res) + \"/calib/temp_clipped\"\n", + "FlowAccPath = \"inputs/Hapi/GIS/\" + str(res) + \"_matched/acc\" + str(res) + \".tif\"\n", + "FlowDPath = \"inputs/Hapi/GIS/\" + str(res) + \"_matched/fd\" + str(res) + \".tif\"\n", + "ParPath = \"inputs/Hapi/meteodata/\" + str(res) + \"/parameters/\"\n", + "# Lake\n", + "LakeMeteoPath = \"inputs/Hapi/meteodata/lakedata.csv\"\n", + "LakeParametersPath = \"inputs/Hapi/meteodata/\" + str(res) + \"/Lakeparameters.txt\"\n", + "GaugesPath = \"inputs/Hapi/meteodata/Gauges/\"\n", + "SaveTo = \"results/\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 4-Distributed Model Object" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-19 23:32:59.351 | DEBUG | catchment:readRainfall:200 - Rainfall data are read successfully\n", + "2022-03-19 23:33:05.199 | DEBUG | catchment:readTemperature:253 - Temperature data are read successfully\n", + "2022-03-19 23:33:12.814 | DEBUG | catchment:readET:295 - Potential Evapotranspiration data are read successfully\n", + "2022-03-19 23:33:12.846 | DEBUG | catchment:readFlowAcc:387 - Flow Accmulation input is read successfully\n", + "2022-03-19 23:33:12.846 | DEBUG | catchment:readFlowDir:441 - Flow Direction input is read successfully\n", + "2022-03-19 23:33:12.877 | DEBUG | catchment:readParameters:624 - Parameters are read successfully\n", + "2022-03-19 23:33:12.877 | DEBUG | catchment:readLumpedModel:678 - Lumped model is read successfully\n" + ] + } + ], + "source": [ + "AreaCoeff = 227.31\n", + "InitialCond = np.loadtxt(\"inputs/Hapi/meteodata/Initia-jiboa.txt\", usecols=0).tolist()\n", + "Snow = 0\n", + "\n", + "start_date = '2012-06-14 19:00:00'\n", + "# Edate = '2014-11-17 00:00:00'\n", + "end_date = '2013-12-23 00:00:00'\n", + "name = \"Jiboa\"\n", + "Jiboa = Catchment(name, start_date, end_date, SpatialResolution=\"Distributed\",\n", + " TemporalResolution=\"Hourly\", fmt='%Y-%m-%d %H:%M:%S')\n", + "Jiboa.readRainfall(PrecPath)\n", + "Jiboa.readTemperature(TempPath)\n", + "Jiboa.readET(Evap_Path)\n", + "Jiboa.readFlowAcc(FlowAccPath)\n", + "Jiboa.readFlowDir(FlowDPath)\n", + "Jiboa.readParameters(ParPath, Snow)\n", + "\n", + "Jiboa.readLumpedModel(HBV, AreaCoeff, InitialCond)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 5-Lake Object" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the Lake the following data is required \n", + "- lake meteorological data\n", + " mean rainfall, mean temperature, and mean evapotranspiration for the whole lake.\n", + "- connected cell to the distributed model :\n", + " ([row ,column] unfortunately for now you have to provide the cell indices however in future versions this requiremtn will be replaced by the coordinates of the lake outlet).\n", + "- Stage-Discharge rating curve :\n", + " so simulate the lake Hapi uses volume vs outflow ralationship to calculate the outflow from the lake, the internal lake sub-routine calculates the volume change for each time \n", + " step and using the curve the outflow can be obtained." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-19 23:33:53.060 | DEBUG | catchment:readMeteoData:1584 - Lake Meteo data are read successfully\n", + "2022-03-19 23:33:53.060 | DEBUG | catchment:readParameters:1603 - Lake Parameters are read successfully\n", + "2022-03-19 23:33:53.060 | DEBUG | catchment:readLumpedModel:1668 - Lumped model is read successfully\n" + ] + } + ], + "source": [ + "# where the lake discharges its flow (give the indices of the cell)\n", + "if res == 4000:\n", + " OutflowCell = [2, 1] # 4km\n", + "elif res == 2000:\n", + " OutflowCell = [4, 2] # 2km\n", + "elif res == 1000:\n", + " OutflowCell = [10, 4] # 1km\n", + "elif res == 500:\n", + " OutflowCell = [19, 10] # 500m\n", + "\n", + "start_date = '2012.06.14 19:00:00'\n", + "# Edate = '2014.11.17 00:00:00'\n", + "end_date = '2013.12.23 00:00:00'\n", + "\n", + "JiboaLake = Lake(start=start_date, end=end_date, fmt='%Y.%m.%d %H:%M:%S',\n", + " TemporalResolution=\"Hourly\", Split=True)\n", + "\n", + "JiboaLake.readMeteoData(LakeMeteoPath, fmt='%d.%m.%Y %H:%M')\n", + "JiboaLake.readParameters(LakeParametersPath)\n", + "\n", + "StageDischargeCurve = np.loadtxt(\"inputs/Hapi/meteodata/curve.txt\")\n", + "LakeInitCond = np.loadtxt(\"inputs/Hapi/meteodata/Initia-lake.txt\", usecols=0).tolist()\n", + "LakeCatArea = 133.98\n", + "LakeArea = 70.64\n", + "Snow = 0\n", + "JiboaLake.readLumpedModel(HBVLake, LakeCatArea, LakeArea, LakeInitCond,\n", + " OutflowCell, StageDischargeCurve, Snow)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 6-Gauges" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-19 23:33:58.759 | DEBUG | catchment:readGaugeTable:773 - Gauge Table is read successfully\n", + "2022-03-19 23:33:59.040 | DEBUG | catchment:readDischargeGauges:867 - Gauges data are read successfully\n" + ] + } + ], + "source": [ + "Date1 = '14.06.2012 19:00'\n", + "Date2 = '23.12.2013 00:00'\n", + "Jiboa.readGaugeTable(GaugesPath + \"GaugesTable.csv\", FlowAccPath)\n", + "Jiboa.readDischargeGauges(GaugesPath, column='id', fmt='%d.%m.%Y %H:%M',\n", + " Split=True, Date1=Date1, Date2=Date2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 7-Run the model" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model Run has finished\n" + ] + } + ], + "source": [ + "Run.runHAPIwithLake(Jiboa, JiboaLake)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 8-Evaluate model performance" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------\n", + "Gauge - 1\n", + "RMSE= 1.93\n", + "NSE= 0.48\n", + "NSEhf= 0.44\n", + "KGE= 0.54\n", + "WB= 72.44\n", + "Pearson CC= 0.62\n", + "R2 = 0.48\n" + ] + } + ], + "source": [ + "Jiboa.extractDischarge(OnlyOutlet=True)\n", + "\n", + "for i in range(len(Jiboa.GaugesTable)):\n", + " gaugeid = Jiboa.GaugesTable.loc[i, 'id']\n", + " print(\"----------------------------------\")\n", + " print(\"Gauge - \" + str(gaugeid))\n", + " print(\"RMSE= \" + str(round(Jiboa.Metrics.loc['RMSE', gaugeid], 2)))\n", + " print(\"NSE= \" + str(round(Jiboa.Metrics.loc['NSE', gaugeid], 2)))\n", + " print(\"NSEhf= \" + str(round(Jiboa.Metrics.loc['NSEhf', gaugeid], 2)))\n", + " print(\"KGE= \" + str(round(Jiboa.Metrics.loc['KGE', gaugeid], 2)))\n", + " print(\"WB= \" + str(round(Jiboa.Metrics.loc['WB', gaugeid], 2)))\n", + " print(\"Pearson CC= \" + str(round(Jiboa.Metrics.loc['Pearson-CC', gaugeid], 2)))\n", + " print(\"R2 = \" + str(round(Jiboa.Metrics.loc['R2', gaugeid], 2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'Calib_RMSEHF': 0.681, 'Calib_RMSELF': 1.143, 'Calib_NSEHf': 0.478, 'Calib_NSELf': -0.853, 'Calib_RMSE': 1.93, 'Calib_KGE': 0.542, 'Calib_WB': 72.445}\n" + ] + } + ], + "source": [ + "Qobs = Jiboa.QGauges[Jiboa.GaugesTable.loc[0, 'id']]\n", + "\n", + "gaugeid = Jiboa.GaugesTable.loc[0, 'id']\n", + "\n", + "WS = {}\n", + "WS['type'] = 1\n", + "WS['N'] = 3\n", + "ModelMetrics = dict()\n", + "ModelMetrics['Calib_RMSEHF'] = round(Pf.RMSEHF(Qobs, Jiboa.Qsim[gaugeid], WS['type'], WS['N'], 0.75), 3)\n", + "ModelMetrics['Calib_RMSELF'] = round(Pf.RMSELF(Qobs, Jiboa.Qsim[gaugeid], WS['type'], WS['N'], 0.75), 3)\n", + "ModelMetrics['Calib_NSEHf'] = round(Pf.NSE(Qobs, Jiboa.Qsim[gaugeid]), 3)\n", + "ModelMetrics['Calib_NSELf'] = round(Pf.NSE(np.log(Qobs), np.log(Jiboa.Qsim[gaugeid])), 3)\n", + "ModelMetrics['Calib_RMSE'] = round(Pf.RMSE(Qobs, Jiboa.Qsim[gaugeid]), 3)\n", + "ModelMetrics['Calib_KGE'] = round(Pf.KGE(Qobs, Jiboa.Qsim[gaugeid]), 3)\n", + "ModelMetrics['Calib_WB'] = round(Pf.WB(Qobs, Jiboa.Qsim[gaugeid]), 3)\n", + "\n", + "print(ModelMetrics)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 9-Plot Hydrograph" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1142 - ----------------------------------\n", + "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1143 - Gauge - 1\n", + "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1144 - RMSE= 1.93\n", + "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1145 - NSE= 0.48\n", + "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1146 - NSEhf= 0.44\n", + "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1147 - KGE= 0.54\n", + "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1148 - WB= 72.44\n", + "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1149 - Pearson-CC= 0.62\n", + "2022-03-19 23:34:29.223 | DEBUG | catchment:plotHydrograph:1152 - R2= 0.48\n" + ] + }, + { + "data": { + "text/plain": "(
,\n )" + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": "
", + "image/png": "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LBbee+89/vrrL44//vg2yd/Y2EhDQwOguY83NDQgpWzTtTojrUoJoPL1z8IoSedBKaYIRkpJ4+qNtFRUh1sURTvo0qULS5Ys4eCDDyY1NZUJEyYwatQoHn30UQCOPPJIRo4cSY8ePejevTsAzzzzDHPmzKFLly7cfffdnHHGGbbrpaSkcNtttzFx4kQyMzP57bffnO7XrVs3vvzySx599FG6devGQw89xJdffmm7tr8MHTqU5ORkdu/ezbRp00hOTnYbkSkUgUR0tJ7P+PHj5bJly8ItRkioeP4Dym5/kpj0NPqt+oiYtJSQ3XtL9mTbdlx+L/otfTdk924L69atY/jw4eEWI+qJxv+DY1uJH5pP34VvhlGayEQIsVxKadqurkZMEUzZ7U8CYK2qoeKZyFYMCoVCESiUYuogqGCqCkUHoINZoCIVpZgUCoVCEVEoxaRQKBSKiEIpJoVCoVBEFEoxKRQKhSKiUIpJoVAoAoXyfQgISjEpFAqFIqJQiknhE1+x2RQKhY6fTUU2NrHnglspmHEFTZt3BkemDohSTAqfdLToIJHKu+++awtLlJOTw8EHH8wzzzyjnm8UU/HUXGq/XkDjsrXsuej2cIsTMSjFpKClsprqD77DssdcWgWF/zz66KNcd911/OMf/2DPnj3s3buX5557jl9//dUpeKuig+NnH6Pu599t283rtwVYmI6LUkwKiq+8h+Ir76HwpGuQVmu4xel0VFZWMmfOHJ555hlmzpxJly5dEEIwduxY3n77bRITE72mUp83bx69e/d2umZ+fj4//PADAPX19VxwwQV07dqV4cOH89BDDzmVLyws5LTTTiM7O5v+/fvz5JNPhuR3K0ygRsuGqHxMHYUgVuC67xcB0Ly1gObNO0kYkh+0e4UKx8CawWZgyQKvxxcvXkxjYyMnnXSSxzLeUqn74q677mL79u1s3bqV2tpajj32WNsxq9XKCSecwEknncTcuXMpKChg6tSpDB06lGnTppn+jYrg0PD7n+EWISJRI6YoREpJ47qtyJaWcIsSFZSWltK9e3fi4uz9wEMPPZTMzEySk5OZP39+u1Kpv//++9x666107dqV3r17c+2119qOLV26lJKSEubMmUNCQgIDBgzgsssu4913VVBgReSiRkxRSMl1D1A992uSpxxIzw8eC7c4nZ5u3bpRWlqKxWKxKadF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\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "gaugei = 0\n", + "plotstart = \"2012-06-16\"\n", + "plotend = \"2013-12-23\"\n", + "\n", + "Jiboa.plotHydrograph(plotstart, plotend, gaugei)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 10-Animate distributed results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- To animate the distributed results you can use the `plotDistributedResults` method \n", + "```\n", + "=============================================================================\n", + "plotDistributedResults(StartDate, EndDate, fmt=\"%Y-%m-%d\", Option = 1, Gauges=False, TicksSpacing = 2, Figsize=(8,8), PlotNumbers=True,\n", + " NumSize= 8, Title = 'Total Discharge',titlesize = 15, Backgroundcolorthreshold=None,\n", + " cbarlabel = 'Discharge m3/s', cbarlabelsize = 12, textcolors=(\"white\",\"black\"),\n", + " Cbarlength = 0.75, Interval = 200,cmap='coolwarm_r', Textloc=[0.1,0.2],\n", + " Gaugecolor='red',Gaugesize=100, ColorScale = 1,gamma=1./2.,linthresh=0.0001,\n", + " linscale=0.001, midpoint=0, orientation='vertical', rotation=-90,\n", + " **kwargs):\n", + "=============================================================================\n", + "\n", + "plotDistributedResults animate the time series of the meteorological inputs and\n", + "the result calculated by the model like the total discharge, upper zone,\n", + "and lower zone discharge and the state variables\n", + "\n", + "Parameters\n", + "----------\n", + " StartDate : [str]\n", + " starting date\n", + " EndDate : [str]\n", + " end date\n", + " fmt : [str]\n", + " format of the gicen date. The default is \"%Y-%m-%d\"\n", + " Option : [str]\n", + " 1- Total discharge, 2-Upper zone discharge, 3-ground water,\n", + " 4-Snowpack state variable, 5-Soil moisture, 6-Upper zone,\n", + " 7-Lower zone, 8-Water content, 9-Precipitation input. 10-ET,\n", + " 11-Temperature. The default is 1\n", + " Gauges : [str]\n", + " . The default is False\n", + " TicksSpacing : [integer], optional\n", + " Spacing in the colorbar ticks. The default is 2.\n", + " Figsize : [tuple], optional\n", + " figure size. The default is (8,8).\n", + " PlotNumbers : [bool], optional\n", + " True to plot the values intop of each cell. The default is True.\n", + " NumSize : integer, optional\n", + " size of the numbers plotted intop of each cells. The default is 8.\n", + " Title : [str], optional\n", + " title of the plot. The default is 'Total Discharge'.\n", + " titlesize : [integer], optional\n", + " title size. The default is 15.\n", + " Backgroundcolorthreshold : [float/integer], optional\n", + " threshold value if the value of the cell is greater, the plotted\n", + " numbers will be black and if smaller the plotted number will be white\n", + " if None given the maxvalue/2 will be considered. The default is None.\n", + " textcolors : TYPE, optional\n", + " Two colors to be used to plot the values i top of each cell. The default is (\"white\",\"black\").\n", + " cbarlabel : str, optional\n", + " label of the color bar. The default is 'Discharge m3/s'.\n", + " cbarlabelsize : integer, optional\n", + " size of the color bar label. The default is 12.\n", + " Cbarlength : [float], optional\n", + " ratio to control the height of the colorbar. The default is 0.75.\n", + " Interval : [integer], optional\n", + " number to controlthe speed of the animation. The default is 200.\n", + " cmap : [str], optional\n", + " color style. The default is 'coolwarm_r'.\n", + " Textloc : [list], optional\n", + " location of the date text. The default is [0.1,0.2].\n", + " Gaugecolor : [str], optional\n", + " color of the points. The default is 'red'.\n", + " Gaugesize : [integer], optional\n", + " size of the points. The default is 100.\n", + " ColorScale : integer, optional\n", + " there are 5 options to change the scale of the colors. The default is 1.\n", + " 1- ColorScale 1 is the normal scale\n", + " 2- ColorScale 2 is the power scale\n", + " 3- ColorScale 3 is the SymLogNorm scale\n", + " 4- ColorScale 4 is the PowerNorm scale\n", + " 5- ColorScale 5 is the BoundaryNorm scale\n", + " ------------------------------------------------------------------\n", + " gamma : [float], optional\n", + " value needed for option 2 . The default is 1./2..\n", + " linthresh : [float], optional\n", + " value needed for option 3. The default is 0.0001.\n", + " linscale : [float], optional\n", + " value needed for option 3. The default is 0.001.\n", + " midpoint : [float], optional\n", + " value needed for option 5. The default is 0.\n", + " ------------------------------------------------------------------\n", + " orientation : [string], optional\n", + " orintation of the colorbar horizontal/vertical. The default is 'vertical'.\n", + " rotation : [number], optional\n", + " rotation of the colorbar label. The default is -90.\n", + " **kwargs : [dict]\n", + " keys:\n", + " Points : [dataframe].\n", + " dataframe contains two columns 'cell_row', and cell_col to\n", + " plot the point at this location\n", + "\n", + " Returns\n", + " -------\n", + " animation.FuncAnimation.\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "ename": "RuntimeError", + "evalue": "Requested MovieWriter (ffmpeg) not available", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mRuntimeError\u001b[0m Traceback (most recent call last)", + "Input \u001b[1;32mIn [14]\u001b[0m, in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 6\u001b[0m plotend \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m2012-08-20\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 8\u001b[0m Anim \u001b[38;5;241m=\u001b[39m Jiboa\u001b[38;5;241m.\u001b[39mPlotDistributedResults(\n\u001b[0;32m 9\u001b[0m plotstart, plotend, Figsize\u001b[38;5;241m=\u001b[39m(\u001b[38;5;241m8\u001b[39m, \u001b[38;5;241m8\u001b[39m), Option\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m6\u001b[39m, threshold\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m160\u001b[39m, PlotNumbers\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m, TicksSpacing\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m10\u001b[39m, Interval\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m10\u001b[39m,\n\u001b[0;32m 10\u001b[0m Gauges\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m, cmap\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124minferno\u001b[39m\u001b[38;5;124m'\u001b[39m, Textloc\u001b[38;5;241m=\u001b[39m[\u001b[38;5;241m0.1\u001b[39m, \u001b[38;5;241m0.2\u001b[39m], Gaugecolor\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mred\u001b[39m\u001b[38;5;124m'\u001b[39m, ColorScale\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m, IDcolor\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mblue\u001b[39m\u001b[38;5;124m'\u001b[39m, IDsize\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m25\u001b[39m,\n\u001b[0;32m 11\u001b[0m gamma\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.08\u001b[39m)\n\u001b[1;32m---> 13\u001b[0m HTML(\u001b[43mAnim\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mto_html5_video\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m)\n", + "File \u001b[1;32m~\\anaconda\\lib\\site-packages\\matplotlib\\animation.py:1266\u001b[0m, in \u001b[0;36mAnimation.to_html5_video\u001b[1;34m(self, embed_limit)\u001b[0m\n\u001b[0;32m 1263\u001b[0m path \u001b[38;5;241m=\u001b[39m Path(tmpdir, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtemp.m4v\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 1264\u001b[0m \u001b[38;5;66;03m# We create a writer manually so that we can get the\u001b[39;00m\n\u001b[0;32m 1265\u001b[0m \u001b[38;5;66;03m# appropriate size for the tag\u001b[39;00m\n\u001b[1;32m-> 1266\u001b[0m Writer \u001b[38;5;241m=\u001b[39m \u001b[43mwriters\u001b[49m\u001b[43m[\u001b[49m\u001b[43mmpl\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrcParams\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43manimation.writer\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m]\u001b[49m\n\u001b[0;32m 1267\u001b[0m writer \u001b[38;5;241m=\u001b[39m Writer(codec\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mh264\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[0;32m 1268\u001b[0m bitrate\u001b[38;5;241m=\u001b[39mmpl\u001b[38;5;241m.\u001b[39mrcParams[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124manimation.bitrate\u001b[39m\u001b[38;5;124m'\u001b[39m],\n\u001b[0;32m 1269\u001b[0m fps\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1000.\u001b[39m \u001b[38;5;241m/\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_interval)\n\u001b[0;32m 1270\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msave(\u001b[38;5;28mstr\u001b[39m(path), writer\u001b[38;5;241m=\u001b[39mwriter)\n", + "File \u001b[1;32m~\\anaconda\\lib\\site-packages\\matplotlib\\animation.py:151\u001b[0m, in \u001b[0;36mMovieWriterRegistry.__getitem__\u001b[1;34m(self, name)\u001b[0m\n\u001b[0;32m 149\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mis_available(name):\n\u001b[0;32m 150\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_registered[name]\n\u001b[1;32m--> 151\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRequested MovieWriter (\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m) not available\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "\u001b[1;31mRuntimeError\u001b[0m: Requested MovieWriter (ffmpeg) not available" + ] + }, + { + "data": { + "text/plain": "
", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "% matplotlib inline\n", + "from IPython.display import HTML\n", + "\n", + "\n", + "plotstart = \"2012-07-20\"\n", + "plotend = \"2012-08-20\"\n", + "\n", + "Anim = Jiboa.plotDistributedResults(\n", + " plotstart, plotend, Figsize=(8, 8), Option=6, threshold=160, PlotNumbers=False, TicksSpacing=10, Interval=10,\n", + " Gauges=False, cmap='inferno', Textloc=[0.1, 0.2], Gaugecolor='red', ColorScale=2, IDcolor='blue', IDsize=25,\n", + " gamma=0.08)\n", + "\n", + "HTML(Anim.to_html5_video())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- if you like to save the animation" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "Path = SaveTo + \"anim.mov\"\n", + "Jiboa.saveAnimation(VideoFormat=\"mov\", Path=Path, SaveFrames=3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 11-Store the result into rasters" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data is saved successfully\n" + ] + } + ], + "source": [ + "StartDate = \"2012-07-20\"\n", + "EndDate = \"2012-08-20\"\n", + "\n", + "Path = SaveTo + \"Lumped_Parameters_\" + str(dt.datetime.now())[0:10] + \"_\"\n", + "Jiboa.saveResults(Result=1, StartDate=StartDate, EndDate=EndDate, Path=Path, FlowAccPath=FlowAccPath)" + ] + } + ], + "metadata": { + "kernelspec": { + "name": "pycharm-e2d4c152", + "language": "python", + "display_name": "PyCharm (pythonProject)" + }, + "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.8.10" + } }, - { - "data": { - "text/plain": "(
,\n )" - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "text/plain": "
", - "image/png": "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LBbee+89/vrrL44//vg2yd/Y2EhDQwOguY83NDQgpWzTtTojrUoJoPL1z8IoSedBKaYIRkpJ4+qNtFRUh1sURTvo0qULS5Ys4eCDDyY1NZUJEyYwatQoHn30UQCOPPJIRo4cSY8ePejevTsAzzzzDHPmzKFLly7cfffdnHHGGbbrpaSkcNtttzFx4kQyMzP57bffnO7XrVs3vvzySx599FG6devGQw89xJdffmm7tr8MHTqU5ORkdu/ezbRp00hOTnYbkSkUgUR0tJ7P+PHj5bJly8ItRkioeP4Dym5/kpj0NPqt+oiYtJSQ3XtL9mTbdlx+L/otfTdk924L69atY/jw4eEWI+qJxv+DY1uJH5pP34VvhlGayEQIsVxKadqurkZMEUzZ7U8CYK2qoeKZyFYMCoVCESiUYuogqGCqCkUHoINZoCIVpZgUCoVCEVEoxaRQKBSKiEIpJoVCoVBEFEoxKRQKhSKiUIpJoVAoAoXyfQgISjEpFAqFIqJQiknhE1+x2RQKhY6fTUU2NrHnglspmHEFTZt3BkemDohSTAqfdLToIJHKu+++awtLlJOTw8EHH8wzzzyjnm8UU/HUXGq/XkDjsrXsuej2cIsTMSjFpKClsprqD77DssdcWgWF/zz66KNcd911/OMf/2DPnj3s3buX5557jl9//dUpeKuig+NnH6Pu599t283rtwVYmI6LUkwKiq+8h+Ir76HwpGuQVmu4xel0VFZWMmfOHJ555hlmzpxJly5dEEIwduxY3n77bRITE72mUp83bx69e/d2umZ+fj4//PADAPX19VxwwQV07dqV4cOH89BDDzmVLyws5LTTTiM7O5v+/fvz5JNPhuR3K0ygRsuGqHxMHYUgVuC67xcB0Ly1gObNO0kYkh+0e4UKx8CawWZgyQKvxxcvXkxjYyMnnXSSxzLeUqn74q677mL79u1s3bqV2tpajj32WNsxq9XKCSecwEknncTcuXMpKChg6tSpDB06lGnTppn+jYrg0PD7n+EWISJRI6YoREpJ47qtyJaWcIsSFZSWltK9e3fi4uz9wEMPPZTMzEySk5OZP39+u1Kpv//++9x666107dqV3r17c+2119qOLV26lJKSEubMmUNCQgIDBgzgsssu4913VVBgReSiRkxRSMl1D1A992uSpxxIzw8eC7c4nZ5u3bpRWlqKxWKxKadF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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "gaugei = 0\n", - "plotstart = \"2012-06-16\"\n", - "plotend = \"2013-12-23\"\n", - "\n", - "Jiboa.plotHydrograph(plotstart, plotend, gaugei)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 10-Animate distributed results" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "- To animate the distributed results you can use the `plotDistributedResults` method \n", - "```\n", - "=============================================================================\n", - "plotDistributedResults(StartDate, EndDate, fmt=\"%Y-%m-%d\", Option = 1, Gauges=False, TicksSpacing = 2, Figsize=(8,8), PlotNumbers=True,\n", - " NumSize= 8, Title = 'Total Discharge',titlesize = 15, Backgroundcolorthreshold=None,\n", - " cbarlabel = 'Discharge m3/s', cbarlabelsize = 12, textcolors=(\"white\",\"black\"),\n", - " Cbarlength = 0.75, Interval = 200,cmap='coolwarm_r', Textloc=[0.1,0.2],\n", - " Gaugecolor='red',Gaugesize=100, ColorScale = 1,gamma=1./2.,linthresh=0.0001,\n", - " linscale=0.001, midpoint=0, orientation='vertical', rotation=-90,\n", - " **kwargs):\n", - "=============================================================================\n", - "\n", - "plotDistributedResults animate the time series of the meteorological inputs and\n", - "the result calculated by the model like the total discharge, upper zone,\n", - "and lower zone discharge and the state variables\n", - "\n", - "Parameters\n", - "----------\n", - " StartDate : [str]\n", - " starting date\n", - " EndDate : [str]\n", - " end date\n", - " fmt : [str]\n", - " format of the gicen date. The default is \"%Y-%m-%d\"\n", - " Option : [str]\n", - " 1- Total discharge, 2-Upper zone discharge, 3-ground water,\n", - " 4-Snowpack state variable, 5-Soil moisture, 6-Upper zone,\n", - " 7-Lower zone, 8-Water content, 9-Precipitation input. 10-ET,\n", - " 11-Temperature. The default is 1\n", - " Gauges : [str]\n", - " . The default is False\n", - " TicksSpacing : [integer], optional\n", - " Spacing in the colorbar ticks. The default is 2.\n", - " Figsize : [tuple], optional\n", - " figure size. The default is (8,8).\n", - " PlotNumbers : [bool], optional\n", - " True to plot the values intop of each cell. The default is True.\n", - " NumSize : integer, optional\n", - " size of the numbers plotted intop of each cells. The default is 8.\n", - " Title : [str], optional\n", - " title of the plot. The default is 'Total Discharge'.\n", - " titlesize : [integer], optional\n", - " title size. The default is 15.\n", - " Backgroundcolorthreshold : [float/integer], optional\n", - " threshold value if the value of the cell is greater, the plotted\n", - " numbers will be black and if smaller the plotted number will be white\n", - " if None given the maxvalue/2 will be considered. The default is None.\n", - " textcolors : TYPE, optional\n", - " Two colors to be used to plot the values i top of each cell. The default is (\"white\",\"black\").\n", - " cbarlabel : str, optional\n", - " label of the color bar. The default is 'Discharge m3/s'.\n", - " cbarlabelsize : integer, optional\n", - " size of the color bar label. The default is 12.\n", - " Cbarlength : [float], optional\n", - " ratio to control the height of the colorbar. The default is 0.75.\n", - " Interval : [integer], optional\n", - " number to controlthe speed of the animation. The default is 200.\n", - " cmap : [str], optional\n", - " color style. The default is 'coolwarm_r'.\n", - " Textloc : [list], optional\n", - " location of the date text. The default is [0.1,0.2].\n", - " Gaugecolor : [str], optional\n", - " color of the points. The default is 'red'.\n", - " Gaugesize : [integer], optional\n", - " size of the points. The default is 100.\n", - " ColorScale : integer, optional\n", - " there are 5 options to change the scale of the colors. The default is 1.\n", - " 1- ColorScale 1 is the normal scale\n", - " 2- ColorScale 2 is the power scale\n", - " 3- ColorScale 3 is the SymLogNorm scale\n", - " 4- ColorScale 4 is the PowerNorm scale\n", - " 5- ColorScale 5 is the BoundaryNorm scale\n", - " ------------------------------------------------------------------\n", - " gamma : [float], optional\n", - " value needed for option 2 . The default is 1./2..\n", - " linthresh : [float], optional\n", - " value needed for option 3. The default is 0.0001.\n", - " linscale : [float], optional\n", - " value needed for option 3. The default is 0.001.\n", - " midpoint : [float], optional\n", - " value needed for option 5. The default is 0.\n", - " ------------------------------------------------------------------\n", - " orientation : [string], optional\n", - " orintation of the colorbar horizontal/vertical. The default is 'vertical'.\n", - " rotation : [number], optional\n", - " rotation of the colorbar label. The default is -90.\n", - " **kwargs : [dict]\n", - " keys:\n", - " Points : [dataframe].\n", - " dataframe contains two columns 'cell_row', and cell_col to\n", - " plot the point at this location\n", - "\n", - " Returns\n", - " -------\n", - " animation.FuncAnimation.\n", - "```" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "ename": "RuntimeError", - "evalue": "Requested MovieWriter (ffmpeg) not available", - "output_type": "error", - "traceback": [ - "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[1;31mRuntimeError\u001B[0m Traceback (most recent call last)", - "Input \u001B[1;32mIn [14]\u001B[0m, in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[0;32m 6\u001B[0m plotend \u001B[38;5;241m=\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m2012-08-20\u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[0;32m 8\u001B[0m Anim \u001B[38;5;241m=\u001B[39m Jiboa\u001B[38;5;241m.\u001B[39mPlotDistributedResults(\n\u001B[0;32m 9\u001B[0m plotstart, plotend, Figsize\u001B[38;5;241m=\u001B[39m(\u001B[38;5;241m8\u001B[39m, \u001B[38;5;241m8\u001B[39m), Option\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m6\u001B[39m, threshold\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m160\u001B[39m, PlotNumbers\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mFalse\u001B[39;00m, TicksSpacing\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m10\u001B[39m, Interval\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m10\u001B[39m,\n\u001B[0;32m 10\u001B[0m Gauges\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mFalse\u001B[39;00m, cmap\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124minferno\u001B[39m\u001B[38;5;124m'\u001B[39m, Textloc\u001B[38;5;241m=\u001B[39m[\u001B[38;5;241m0.1\u001B[39m, \u001B[38;5;241m0.2\u001B[39m], Gaugecolor\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mred\u001B[39m\u001B[38;5;124m'\u001B[39m, ColorScale\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m2\u001B[39m, IDcolor\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mblue\u001B[39m\u001B[38;5;124m'\u001B[39m, IDsize\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m25\u001B[39m,\n\u001B[0;32m 11\u001B[0m gamma\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m0.08\u001B[39m)\n\u001B[1;32m---> 13\u001B[0m HTML(\u001B[43mAnim\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mto_html5_video\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m)\n", - "File \u001B[1;32m~\\anaconda\\lib\\site-packages\\matplotlib\\animation.py:1266\u001B[0m, in \u001B[0;36mAnimation.to_html5_video\u001B[1;34m(self, embed_limit)\u001B[0m\n\u001B[0;32m 1263\u001B[0m path \u001B[38;5;241m=\u001B[39m Path(tmpdir, \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mtemp.m4v\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[0;32m 1264\u001B[0m \u001B[38;5;66;03m# We create a writer manually so that we can get the\u001B[39;00m\n\u001B[0;32m 1265\u001B[0m \u001B[38;5;66;03m# appropriate size for the tag\u001B[39;00m\n\u001B[1;32m-> 1266\u001B[0m Writer \u001B[38;5;241m=\u001B[39m \u001B[43mwriters\u001B[49m\u001B[43m[\u001B[49m\u001B[43mmpl\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mrcParams\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43manimation.writer\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m]\u001B[49m\n\u001B[0;32m 1267\u001B[0m writer \u001B[38;5;241m=\u001B[39m Writer(codec\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mh264\u001B[39m\u001B[38;5;124m'\u001B[39m,\n\u001B[0;32m 1268\u001B[0m bitrate\u001B[38;5;241m=\u001B[39mmpl\u001B[38;5;241m.\u001B[39mrcParams[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124manimation.bitrate\u001B[39m\u001B[38;5;124m'\u001B[39m],\n\u001B[0;32m 1269\u001B[0m fps\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m1000.\u001B[39m \u001B[38;5;241m/\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_interval)\n\u001B[0;32m 1270\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39msave(\u001B[38;5;28mstr\u001B[39m(path), writer\u001B[38;5;241m=\u001B[39mwriter)\n", - "File \u001B[1;32m~\\anaconda\\lib\\site-packages\\matplotlib\\animation.py:151\u001B[0m, in \u001B[0;36mMovieWriterRegistry.__getitem__\u001B[1;34m(self, name)\u001B[0m\n\u001B[0;32m 149\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mis_available(name):\n\u001B[0;32m 150\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_registered[name]\n\u001B[1;32m--> 151\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mRuntimeError\u001B[39;00m(\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mRequested MovieWriter (\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mname\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m) not available\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n", - "\u001B[1;31mRuntimeError\u001B[0m: Requested MovieWriter (ffmpeg) not available" - ] - }, - { - "data": { - "text/plain": "
", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "% matplotlib inline\n", - "from IPython.display import HTML\n", - "\n", - "\n", - "plotstart = \"2012-07-20\"\n", - "plotend = \"2012-08-20\"\n", - "\n", - "Anim = Jiboa.plotDistributedResults(\n", - " plotstart, plotend, Figsize=(8, 8), Option=6, threshold=160, PlotNumbers=False, TicksSpacing=10, Interval=10,\n", - " Gauges=False, cmap='inferno', Textloc=[0.1, 0.2], Gaugecolor='red', ColorScale=2, IDcolor='blue', IDsize=25,\n", - " gamma=0.08)\n", - "\n", - "HTML(Anim.to_html5_video())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "- if you like to save the animation" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "Path = SaveTo + \"anim.mov\"\n", - "Jiboa.saveAnimation(VideoFormat=\"mov\", Path=Path, SaveFrames=3)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# 11-Store the result into rasters" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Data is saved successfully\n" - ] - } - ], - "source": [ - "StartDate = \"2012-07-20\"\n", - "EndDate = \"2012-08-20\"\n", - "\n", - "Path = SaveTo + \"Lumped_Parameters_\" + str(dt.datetime.now())[0:10] + \"_\"\n", - "Jiboa.saveResults(Result=1, StartDate=StartDate, EndDate=EndDate, Path=Path, FlowAccPath=FlowAccPath)" - ] - } - ], - "metadata": { - "kernelspec": { - "name": "pycharm-e2d4c152", - "language": "python", - "display_name": "PyCharm (pythonProject)" - }, - "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.8.10" - } - }, - "nbformat": 4, - "nbformat_minor": 4 + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/examples/hydrological-model/Note books/Lumped-Model_Run.ipynb b/examples/hydrological-model/Note books/Lumped-Model_Run.ipynb index 9e0b2bab1..881162c26 100644 --- a/examples/hydrological-model/Note books/Lumped-Model_Run.ipynb +++ b/examples/hydrological-model/Note books/Lumped-Model_Run.ipynb @@ -1,428 +1,428 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "a364d52f-69a7-475b-933d-89650d591a05", - "metadata": {}, - "source": [ - "# Lumped Conceptual Model" - ] - }, - { - "cell_type": "markdown", - "id": "5ec32bfb-e0a3-47c1-9371-b9225ee110e0", - "metadata": {}, - "source": [ - "- please change the Path to the directory where you stored the case study data" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "e6b2629f", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "Comp = \"F:/01Algorithms/Hydrology/HAPI/Examples\"\n", - "os.chdir(Comp)\n", - "#os.listdir(Path)" - ] - }, - { - "cell_type": "markdown", - "id": "0c51f000", - "metadata": {}, - "source": [ - "### Import Modules" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "efd94b20", - "metadata": {}, - "outputs": [], - "source": [ - "import datetime as dt\n", - "import matplotlib.pyplot as plt\n", - "\n", - "\n", - "import Hapi.rrm.hbv_bergestrom92 as HBVLumped\n", - "from Hapi.run import Run\n", - "from Hapi.catchment import Catchment\n", - "from Hapi.rrm.routing import Routing\n", - "import Hapi.sm.performancecriteria as PC" - ] - }, - { - "cell_type": "markdown", - "id": "883d3c98", - "metadata": {}, - "source": [ - "### Paths" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "78d8611e", - "metadata": {}, - "outputs": [], - "source": [ - "Parameterpath = Comp + \"/data/lumped/Coello_Lumped2021-03-08_muskingum.txt\"\n", - "MeteoDataPath = Comp + \"/data/lumped/meteo_data-MSWEP.csv\"\n", - "Path = Comp + \"/data/lumped/\"" - ] - }, - { - "cell_type": "markdown", - "id": "85e3c2f9", - "metadata": {}, - "source": [ - "### Meteorological data" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "5812a7f5", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Lumped Model inputs are read successfully\n" - ] - } - ], - "source": [ - "start = \"2009-01-01\"\n", - "end = \"2011-12-31\"\n", - "name = \"Coello\"\n", - "Coello = Catchment(name, start, end)\n", - "Coello.readLumpedInputs(MeteoDataPath)" - ] - }, - { - "cell_type": "markdown", - "id": "eca51f8c-de23-4743-9e80-0ea3497a17b5", - "metadata": {}, - "source": [ - "### Lumped model" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "e99e1b85", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Lumped model is read successfully\n" - ] - } - ], - "source": [ - "# catchment area\n", - "AreaCoeff = 1530\n", - "# [Snow pack, Soil moisture, Upper zone, Lower Zone, Water content]\n", - "InitialCond = [0,10,10,10,0]\n", - "\n", - "Coello.readLumpedModel(HBVLumped, AreaCoeff, InitialCond)" - ] - }, - { - "cell_type": "markdown", - "id": "38e7ae6a-d43a-4fc0-9985-4dd69b5f84e1", - "metadata": {}, - "source": [ - "### Model Parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "bb1d0450-e973-44af-88af-f6f8e44c1783", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Parameters are read successfully\n" - ] - } - ], - "source": [ - "Snow = 0 # no snow subroutine\n", - "Coello.readParameters(Parameterpath, Snow)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "256545fe-9c7c-4628-b559-f43a307c5db4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0.7,\n", - " 51.1726422,\n", - " 1.147999,\n", - " 0.1,\n", - " 0.88137,\n", - " 0.82353,\n", - " 0.35651,\n", - " 0.03223,\n", - " 47.426,\n", - " 5.2744,\n", - " 1.0,\n", - " 0.2]" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Coello.Parameters" - ] - }, - { - "cell_type": "markdown", - "id": "602e4629", - "metadata": {}, - "source": [ - "### Observed flow" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "54555e66", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gauges data are read successfully\n" - ] - } - ], - "source": [ - "Coello.readDischargeGauges(Path + \"Qout_c.csv\", fmt=\"%Y-%m-%d\")" - ] - }, - { - "cell_type": "markdown", - "id": "60f825cc-49ee-4680-b8cb-901bd11774ec", - "metadata": {}, - "source": [ - "- the discharge data should be stored in the text file with the date stored in the first column and the discharge values in the second column" - ] - }, - { - "cell_type": "markdown", - "id": "894ecdc8", - "metadata": {}, - "source": [ - "### Routing" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "f80b814a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model Run has finished\n" - ] - } - ], - "source": [ - "# RoutingFn = Routing.TriangularRouting2\n", - "RoutingFn = Routing.Muskingum_V\n", - "Route = 1" - ] - }, - { - "cell_type": "markdown", - "id": "560380a3-6dd5-44a5-b9c4-8d65e53d5a5f", - "metadata": {}, - "source": [ - "### Run The Model" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "c4f9c7fc-c087-4fef-be5c-f970e1f13f68", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model Run has finished\n" - ] - } - ], - "source": [ - "Run.runLumped(Coello, Route, RoutingFn)" - ] - }, - { - "cell_type": "markdown", - "id": "3b30a30b", - "metadata": {}, - "source": [ - "### Calculate performance criteria" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "7e1a0414", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "RMSE= 26.03\n", - "NSE= 0.01\n", - "NSEhf= 0.17\n", - "KGE= 0.54\n", - "WB= 96.55\n" - ] - } - ], - "source": [ - "Metrics = dict()\n", - "\n", - "# gaugeid = Coello.QGauges.columns[-1]\n", - "Qobs = Coello.QGauges['q']\n", - "\n", - "Metrics['RMSE'] = PC.RMSE(Qobs, Coello.Qsim['q'])\n", - "Metrics['NSE'] = PC.NSE(Qobs, Coello.Qsim['q'])\n", - "Metrics['NSEhf'] = PC.NSEHF(Qobs, Coello.Qsim['q'])\n", - "Metrics['KGE'] = PC.KGE(Qobs, Coello.Qsim['q'])\n", - "Metrics['WB'] = PC.WB(Qobs, Coello.Qsim['q'])\n", - "\n", - "print(\"RMSE= \" + str(round(Metrics['RMSE'],2)))\n", - "print(\"NSE= \" + str(round(Metrics['NSE'],2)))\n", - "print(\"NSEhf= \" + str(round(Metrics['NSEhf'],2)))\n", - "print(\"KGE= \" + str(round(Metrics['KGE'],2)))\n", - "print(\"WB= \" + str(round(Metrics['WB'],2)))" - ] - }, - { - "cell_type": "markdown", - "id": "da4641e2", - "metadata": {}, - "source": [ - "### Plot Hydrograph" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "17053377", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(
,\n", - " )" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" + "cells": [ + { + "cell_type": "markdown", + "id": "a364d52f-69a7-475b-933d-89650d591a05", + "metadata": {}, + "source": [ + "# Lumped Conceptual Model" + ] + }, + { + "cell_type": "markdown", + "id": "5ec32bfb-e0a3-47c1-9371-b9225ee110e0", + "metadata": {}, + "source": [ + "- please change the Path to the directory where you stored the case study data" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "e6b2629f", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "Comp = \"F:/01Algorithms/Hydrology/HAPI/Examples\"\n", + "os.chdir(Comp)\n", + "#os.listdir(Path)" + ] + }, + { + "cell_type": "markdown", + "id": "0c51f000", + "metadata": {}, + "source": [ + "### Import Modules" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "efd94b20", + "metadata": {}, + "outputs": [], + "source": [ + "import datetime as dt\n", + "import matplotlib.pyplot as plt\n", + "\n", + "\n", + "import Hapi.rrm.hbv_bergestrom92 as HBVLumped\n", + "from Hapi.run import Run\n", + "from Hapi.catchment import Catchment\n", + "from Hapi.rrm.routing import Routing\n", + "import Hapi.sm.performancecriteria as PC" + ] + }, + { + "cell_type": "markdown", + "id": "883d3c98", + "metadata": {}, + "source": [ + "### Paths" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "78d8611e", + "metadata": {}, + "outputs": [], + "source": [ + "Parameterpath = Comp + \"/data/lumped/Coello_Lumped2021-03-08_muskingum.txt\"\n", + "MeteoDataPath = Comp + \"/data/lumped/meteo_data-MSWEP.csv\"\n", + "Path = Comp + \"/data/lumped/\"" + ] + }, + { + "cell_type": "markdown", + "id": "85e3c2f9", + "metadata": {}, + "source": [ + "### Meteorological data" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "5812a7f5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Lumped Model inputs are read successfully\n" + ] + } + ], + "source": [ + "start = \"2009-01-01\"\n", + "end = \"2011-12-31\"\n", + "name = \"Coello\"\n", + "Coello = Catchment(name, start, end)\n", + "Coello.readLumpedInputs(MeteoDataPath)" + ] + }, + { + "cell_type": "markdown", + "id": "eca51f8c-de23-4743-9e80-0ea3497a17b5", + "metadata": {}, + "source": [ + "### Lumped model" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "e99e1b85", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Lumped model is read successfully\n" + ] + } + ], + "source": [ + "# catchment area\n", + "AreaCoeff = 1530\n", + "# [Snow pack, Soil moisture, Upper zone, Lower Zone, Water content]\n", + "InitialCond = [0,10,10,10,0]\n", + "\n", + "Coello.readLumpedModel(HBVLumped, AreaCoeff, InitialCond)" + ] + }, + { + "cell_type": "markdown", + "id": "38e7ae6a-d43a-4fc0-9985-4dd69b5f84e1", + "metadata": {}, + "source": [ + "### Model Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "bb1d0450-e973-44af-88af-f6f8e44c1783", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Parameters are read successfully\n" + ] + } + ], + "source": [ + "Snow = 0 # no snow subroutine\n", + "Coello.readParameters(Parameterpath, Snow)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "256545fe-9c7c-4628-b559-f43a307c5db4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.7,\n", + " 51.1726422,\n", + " 1.147999,\n", + " 0.1,\n", + " 0.88137,\n", + " 0.82353,\n", + " 0.35651,\n", + " 0.03223,\n", + " 47.426,\n", + " 5.2744,\n", + " 1.0,\n", + " 0.2]" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Coello.Parameters" + ] + }, + { + "cell_type": "markdown", + "id": "602e4629", + "metadata": {}, + "source": [ + "### Observed flow" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "54555e66", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gauges data are read successfully\n" + ] + } + ], + "source": [ + "Coello.readDischargeGauges(Path + \"Qout_c.csv\", fmt=\"%Y-%m-%d\")" + ] + }, + { + "cell_type": "markdown", + "id": "60f825cc-49ee-4680-b8cb-901bd11774ec", + "metadata": {}, + "source": [ + "- the discharge data should be stored in the text file with the date stored in the first column and the discharge values in the second column" + ] + }, + { + "cell_type": "markdown", + "id": "894ecdc8", + "metadata": {}, + "source": [ + "### Routing" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "f80b814a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model Run has finished\n" + ] + } + ], + "source": [ + "# RoutingFn = Routing.TriangularRouting2\n", + "RoutingFn = Routing.Muskingum_V\n", + "Route = 1" + ] + }, + { + "cell_type": "markdown", + "id": "560380a3-6dd5-44a5-b9c4-8d65e53d5a5f", + "metadata": {}, + "source": [ + "### Run The Model" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "c4f9c7fc-c087-4fef-be5c-f970e1f13f68", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model Run has finished\n" + ] + } + ], + "source": [ + "Run.runLumped(Coello, Route, RoutingFn)" + ] + }, + { + "cell_type": "markdown", + "id": "3b30a30b", + "metadata": {}, + "source": [ + "### Calculate performance criteria" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "7e1a0414", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE= 26.03\n", + "NSE= 0.01\n", + "NSEhf= 0.17\n", + "KGE= 0.54\n", + "WB= 96.55\n" + ] + } + ], + "source": [ + "Metrics = dict()\n", + "\n", + "# gaugeid = Coello.QGauges.columns[-1]\n", + "Qobs = Coello.QGauges['q']\n", + "\n", + "Metrics['RMSE'] = PC.RMSE(Qobs, Coello.Qsim['q'])\n", + "Metrics['NSE'] = PC.NSE(Qobs, Coello.Qsim['q'])\n", + "Metrics['NSEhf'] = PC.NSEHF(Qobs, Coello.Qsim['q'])\n", + "Metrics['KGE'] = PC.KGE(Qobs, Coello.Qsim['q'])\n", + "Metrics['WB'] = PC.WB(Qobs, Coello.Qsim['q'])\n", + "\n", + "print(\"RMSE= \" + str(round(Metrics['RMSE'],2)))\n", + "print(\"NSE= \" + str(round(Metrics['NSE'],2)))\n", + "print(\"NSEhf= \" + str(round(Metrics['NSEhf'],2)))\n", + "print(\"KGE= \" + str(round(Metrics['KGE'],2)))\n", + "print(\"WB= \" + str(round(Metrics['WB'],2)))" + ] + }, + { + "cell_type": "markdown", + "id": "da4641e2", + "metadata": {}, + "source": [ + "### Plot Hydrograph" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "17053377", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(
,\n", + " )" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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yCOP9Nt2wQUX8PLLL7Nt2zbKy8u5//77Oe+884iOjg56zkD9VSgUrQcloCKAk046iYSEBO/fI488wiWXXMK+++5Lnz59OO6447zCpCEcddRRDBgwgGOOOYb/+7//47jjjgPgtttu47TTTuO4444jJSWFgw8+mAULFgAwbNgw3njjDS688EIyMjJIT0/XeRMGon379hxzzDGmKYauvPJKLrnkEo488kj69u1LfHw8r732WkjnDNRfhULRemj19aDWrVvHPvvs0wI9ihwyMzPp27cvdXV1REe3SauuF3U/KBQ+9rzwIUXPfuD93D//nxbph1U9KKVBKRQKhSIiUQJKoVAoFBFJ27b3tBH69OlDazHlKhSKtoPSoBQKhaKtEuHjViWgFAqFQhGRKAGlUCgUiohECSiFQqFQRCRKQCkUCoUiIlECSqFQKBQRiRJQEcDUqVM56KCDSEpKonPnzhx00EG8+eabyjVcoVC0aZSAamFefPFFbrvtNv73v/+xe/ducnNzefvtt5k7dy61tbUt3T2FQqFoMZSAakFKSkqYOHEib775JmeffTYpKSkIIdhvv/34/PPPiYuL46effmK//fYjNTWVnj178sgjj3j3N5aBB1dQrqdSblVVFZdddhnp6enss88+PPfcc7r22dnZnHXWWXTq1Im+ffv6VeBVKBSKlqTNZZLY0umIZjtXsMSL//33HzU1NZx++umWbZKSkvjkk08YNmwYq1ev5thjj2XUqFF+FWrNePTRR8nMzGTr1q1UVFRw0kknebc5nU5OPfVUTj/9dKZMmUJWVhbjx49n8ODBHH/88SF/R4VCoWgqlAbVghQUFNCxY0ddhvFDDz2UtLQ0EhISmDNnDmPHjmXEiBHYbDZGjhzJBRdcwN9//x3S8adNm8b999/vLVdx6623erctWrSI/Px8Jk6cSGxsLP369eOaa65h6tSpjf49FQqFoj60OQ0qkujQoQMFBQXY7XavkJo3bx4APXr0wOl0smDBAu69915Wr15NbW0tNTU1nHPOOSEd31g6Xbu8fft2srOzSUtL865zOBwccUTzaZgKhaKFiXBHrDYnoFqq3okZhxxyCHFxcfzwww+cddZZpm0uvPBCbr75Zn755Rfi4+O5/fbbKSgoAPzLwjscDvLz872fMzIyyMrKYujQoYCr5LuHnj170rdvXzZt2tQUX02h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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "gaugei = 0\n", + "plotstart = \"2009-01-01\"\n", + "plotend = \"2011-12-31\"\n", + "Coello.plotHydrograph(plotstart, plotend, gaugei, Title= \"Lumped Model\")" + ] + }, + { + "cell_type": "markdown", + "id": "6193fb9c", + "metadata": {}, + "source": [ + "### Save Results" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "88e8fae6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data is saved successfully\n" + ] + } + ], + "source": [ + "StartDate = \"2009-01-01\"\n", + "EndDate = \"2010-04-20\"\n", + "\n", + "Path = SaveTo + \"Results-Lumped-Model\" + str(dt.datetime.now())[0:10] + \".txt\"\n", + "Coello.saveResults(Result=5, StartDate=StartDate, EndDate=EndDate, Path=Path)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.10" + } }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAFgCAYAAADuCe0ZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAACYc0lEQVR4nO2ddZjU1teA3zvryi6+uEOx0pZSb6GlrtTd3eX71UvdnbpQb6HUoU5bKC0Ud9cFll3WWPeZud8fY0kmGVkddu/7PPtsJrlJ7mSSnHvOPSKklCgUCoVCEWnYWroDCoVCoVCYoQSUQqFQKCISJaAUCoVCEZEoAaVQKBSKiEQJKIVCoVBEJEpAKRQKhSIiUQJKodjLEEJ8JISQQog+Ld2X+iKEyBRCZDbCcaQQYnbDe6SIRJSAUkQE7heNCsprAjQCTQohHg3Q7jJNu9nN2EWFwhQloBSKtoMduFIIEWWx/Rp3G4UiIlACSqFoO/wI9ABOMG4QQuwDHAbMaO5OKRRWKAGl2KsQQjziNkGNNdnWx73tI8N6j4mrrxDiZiHEWiFEtXse5H4hhHC3O0cIsVAIUSGEyBNCvC6EiDc5jxRCzBZCdBNCfOpuWyWEWCKEuDBA348XQvwshCgQQtQIIbYIIZ4XQqRZtB8vhPjH3Z89QojvhRBDwrtiOj4HqnBpSkY8694P0P84IcS9QoiVQohKIUSpu3/nWrQX7uu9xn29d7mvabtAnRRCXCCEmCWEKHLvt04I8aAQIi7UL6poHUS3dAcUimbkBWAsLi3hd+A04EkgVgixB3gG+B74BzgWuAmIAm4wOVY6MA8oBj4E0oBzgc+FEN2llM9rGwshJgKPAntwaTJ5wEjg/4CThBCHSClLNe3PBr4Eat3/c4DDgf+AlfX8/sXAV8CFQogMKWWO+1xxwKXA38BGsx2FELHAb8BRwHrgDSAROBv4UggxSkp5v2G3V4Bb3X1/F6gDTgcOAmLd3814nsnAlUAW8K27zwcDjwPHCCGOlVIqM2RbQUqp/tRfi/8B0nU7Bm33iLvtWJNtfdzbPjKs/8i9PhPorlmfBhQAFUA+sI9mWxywFqgBOpv1FZgG2DTr++ISQLVAP836ce7284A0w7Eud297WbMuGSjE9UIfbWj/sub8fUK8tp7vPx6XkJPAfZrt57vXXQQMcC/PNhzjPvf6n4FozfrO7usqgUM16w91r9sMtNesj8clZCWQaXEtvgUSLH7320x+i9mhXAf1t/f9KROfoi3xuJRyl+eDlLIYmI5LE3hLSrlOs60Gl+YSC+xjciwHcI+U0qnZZxswCYgBLtG0vdX9/xr3OdHs8xGwHJdw8HA60B74Qkq52HDeR4CSgN8yAFLKf4F1wNUe0yYu814R8E2AXa/EJQzulBoNRkqZh0u7Abha0/4K9/8npZR7NO2rcQk7M27D7cghpawybHscl9C+yG8vRatFmfgUbQnjyx4g2/1/ick2jzDrYbJth1sgGZkNPAzsp1l3CC5t6BwhxDkm+8QCnYQQHaSUhcD+7vV/GxtKKUuEEMtxmdrqy/vAi8DRQojtuDS816SU1T6Z5UMIkYJLs9olpVxvcry/3P+139nyO+AyoerMdEKIRGBfXBrt7Wb9wKXNmg0WFK0UJaAUbQkzzcMewrYYk225FufY7f6vdQTogOtZezhI/zymPc++wc5RXz4BnsKl8WwHBPBegPae/uRYbPesTzPZx+87SCkdQohCw+p0dz86Efw6KdoISkAp9jY8JjWzezetGfvRxWJ9V/d/rcArwTVX1T7EY3v2DXaOeiGlLBBCfAdMAEqB/6SUq0Poj9V5MwzttMtdgK3axu44rA74NFRt+2VSyv1RKFBu5oq9jyL3/54m20Y3Yz96WaQaGuv+v0yzbj6QLoQYFuKxl7r/+5nx3C7ao0I8TiDew+UI0onA2hNSyjJgC9BdCDHQpMk49/+lmnWW3wE4AsMAQ0pZDqwBhgkhQhXkilaOElCKvY2F7v9XCCG8LzkhRE9gYjP2Iwp4VgjhfYaEEH1xOUTYgc80bV92/39PCNHNeCAhRJIQ4mDNqh9wCeILhRBGofsIevNhfZmFyxljAjA1hPYf4DLBPa/NRCGE6Ag8pGnj4SP3/we0AscdV/a0xTlewjUf94FZbJgQIl0IobSrNoQy8SkiCmOQrYEbpZQLhBBzgCOBhUKIv3CZkU7FFadjplk1BStxxfMsEUL8jktonIfLzHi3lHKLp6GU8k8hxL24XsybhBA/A9twzTn1xqVl/Is7w4OUslwIcS0uL8J/hBDaOKjhgOf71xsppcTlwRgqLwAn4hJqK9zfIRE4B5er+XNuD0HP8ecKIV4DbgFWCyG+xhcHVYTJfJaU8gMhxAHAjcAWIcRvwA5cHo19cX3nD4Hrw/y6ir2VlvZzV3/qT0pdbFGgvzR32zRcZqk8XJ5dq4FrCR4H1cfkvI9gHVd1uXvb5SZ9nQ10w6Up5QHVuMxaFwb4jofjip3KxhUrlY/LxfwlDPFO7vbH4hJclbhe6j8AQwJ9H4vzetqPD6GtaRyUe1s8cL/7elcBZe7+XWBxLAHcjMutvcb9vd/AJcwzMcRBafY7BV8wcy0up5CFwBPAELPfoqXvX/XXNH/C/SMrFIoQEa6s639LKce2dF8UitaMmoNSKBQKRUSiBJRCoVAoIpJmEVBCiHh3lugV7szGj7rXtxdCzBRCbHL/T9fsc58QYrMQYoMQ4vjm6KdCoVAoIodmmYNy5/xKki7vpBhcE6u3AWcCe6SUz7i9nNKllPcIIYYCU4AxuCai/wAGSSkdTd5ZhUKhUEQEzeJmLl1SsNz9Mcb9J3G5nI51r/8Yl2fUPe71U6UrYec2IcRmXMLqP6tzdOzYUfbp06cJeq9QKBSKpmTJkiUFUspOxvXNFgflDu5bgsuN9Q3pimfpIt01aaSUOUKIzu7m3XFF33vIcq+zpE+fPixebJYLVKFQKBSRjDtpsR/N5iQhpXRIKUfhygw9RggxPEBzs1TGfrZIIcS1QojFQojF+fn5jdRThUKhUEQCze7FJ131cGbjiprPFUJkALj/57mbZaHPCNADX1kE7bHelVKOllKO7tTJTztUKBQKxV5Mc3nxdfLk1hJCJOCq7LkeV6qVy9zNLsMVKY97/flCiDh3frOB+HKwKRQKhaIN0FxzUBnAx+55KBswTUr5oxDiP2CaEOIqXDm3zgGQUq4RQkzDVXLbDtykPPgUCoWibdFqUh2NHj1aWjlJlJaWkpeXR11dXTP3ShEpxMTE0LlzZ1JTU1u6KwqFwoAQYomU0q9cTqvPZl5aWkpubi7du3cnISEBi1LSilaMlJKqqip27XLVx1NCSqHYO2j1qY7y8vLo3r07iYmJSji1UYQQJCYm0r17d/Ly8oLvoFAoIoJWL6Dq6upISEho6W4oIoCEhARl5lUo9iJavYAClOakANR9oFDsbbQJAaVQKBQKc6Tdjn13QUt3wxQloBRh06dPH/7444+IPGdmZiZCCOx2ezP0SqHYu5G1dew89BK2jzyT0k+mt3R3/FACqoVpiZd9U3L55ZcjhGD6dP3NfvvttyOE4KOPPmqZjikUCj9Kp/xM3bYskJL8u55v6e74oQSUotEZNGgQH3/8sfez3W7nq6++on///i3YK4VCYcRRUNTSXQiIElARyuWXX86DDz7o/Tx79mx69Ojh/dynTx+ef/55Ro4cSVJSEldddRW5ubmceOKJpKSkMH78eIqKXDefx+z17rvv0q1bNzIyMnjxxRe9x3I6nTzzzDP079+fDh06cO6557Jnzx7v9k8//ZTevXvToUMHnnzyyaB9P/XUU5k7d673/L/++isjR46ka9euunM+8cQT9O7dm86dO3PppZdSUlIS0jmD9VehUIRIhCdqaJMC6pEvFiNOfbdR/k597NcW+x7ffPMNM2fOZOPGjcyYMYMTTzyRp556ioKCApxOJ5MmTdK1nzVrFps2beL333/nmWee8ZoWJ02axPfff8/ff/9NdnY26enp3HTTTQCsXbuWG264gU8//ZTs7GwKCwvJysoK2K/4+HhOO+00pk6dCsAnn3zCpZdeqmvz0Ucf8dFHHzFr1iy2bt1KeXk5N998c0jnDNRfhULRemiTAqq1cMstt9ClSxe6d+/OEUccwUEHHcR+++1HXFwcEyZMYNmyZbr2Dz/8MElJSYwYMYIrrriCKVOmAPDOO+/w5JNP0qNHD+Li4njkkUf4+uuvsdvtfP3115xyyikceeSRxMXF8fjjj2OzBb9tLr30Uj755BNKSkr4+++/OeOMM3TbP//8c+6880769etHcnIyTz/9NFOnTg3pnIH6q1AoWg+tPtVRa6ZLly7e5YSEBL/P5eXluvY9e/oqmPTu3ZtVq1YBsH37diZMmKATAlFRUeTm5pKdna3bLykpiQ4dOgTt2+GHH05+fj5PPPEEp5xyil+wdHZ2Nr1799b1x263h3TOQP1VKBSthzYpoB65cDSPXOiXlzCiSEpKorKy0vt59+7dDT7mzp07GTJkCAA7duygW7dugEtwffDBBxx22GF++2RkZLBu3Trv58rKSgoLC0M638UXX8xjjz3GrFmz/LZ169aN7dt9RTR37NhBdHQ0Xbp0CXrOQP3NzMwMqW8KhSLyUSa+CKCuro7q6mrvn91uZ9SoUfz888/s2bOH3bt388orrzT4PI8//jiVlZWsWbOGDz/8kPPOOw+A66+/ngceeMArMPLz8/nhB1dprrPPPpsff/yRf//9l9raWiZOnIjT6QzpfLfeeiszZ87kyCOP9Nt2wQUX8PLLL7Nt2zbKy8u5//77Oe+884iOjg56zkD9VSgUrQcloCKAk046iYSEBO/fI488wiWXXMK+++5Lnz59OO6447zCpCEcddRRDBgwgGOOOYb/+7//47jjjgPgtttu47TTTuO4444jJSWFgw8+mAULFgAwbNgw3njjDS688EIyMjJIT0/XeRMGon379hxzzDGmKYauvPJKLrnkEo488kj69u1LfHw8r732WkjnDNRfhULRemj19aDWrVvHPvvs0wI9ihwyMzPp27cvdXV1REe3SauuF3U/KBQ+9rzwIUXPfuD93D//nxbph1U9KKVBKRQKhSIiUQJKoVAoFBFJ27b3tBH69OlDazHlKhSKtoPSoBQKhaKtEuHjViWgFAqFQhGRKAGlUCgUiohECSiFQqFQRCRKQCkUCoUiIlECSqFQKBQRiRJQEcDUqVM56KCDSEpKonPnzhx00EG8+eabyjVcoVC0aZSAamFefPFFbrvtNv73v/+xe/ducnNzefvtt5k7dy61tbUt3T2FQqFoMZSAakFKSkqYOHEib775JmeffTYpKSkIIdhvv/34/PPPiYuL46effmK//fYjNTWVnj178sgjj3j3N5aBB1dQrqdSblVVFZdddhnp6enss88+PPfcc7r22dnZnHXWWXTq1Im+ffv6VeBVKBSKlqTNZZLY0umIZjtXsMSL//33HzU1NZx++umWbZKSkvjkk08YNmwYq1ev5thjj2XUqFF+FWrNePTRR8nMzGTr1q1UVFRw0kknebc5nU5OPfVUTj/9dKZMmUJWVhbjx49n8ODBHH/88SF/R4VCoWgqlAbVghQUFNCxY0ddhvFDDz2UtLQ0EhISmDNnDmPHjmXEiBHYbDZGjhzJBRdcwN9//x3S8adNm8b999/vLVdx6623erctWrSI/Px8Jk6cSGxsLP369eOaa65h6tSpjf49FQqFoj60OQ0qkujQoQMFBQXY7XavkJo3bx4APXr0wOl0smDBAu69915Wr15NbW0tNTU1nHPOOSEd31g6Xbu8fft2srOzSUtL865zOBwccUTzaZgKhaKFiXBHrDYnoFqq3okZhxxyCHFxcfzwww+cddZZpm0uvPBCbr75Zn755Rfi4+O5/fbbKSgoAPzLwjscDvLz872fMzIyyMrKYujQoYCr5LuHnj170rdvXzZt2tQUX02h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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "gaugei = 0\n", - "plotstart = \"2009-01-01\"\n", - "plotend = \"2011-12-31\"\n", - "Coello.plotHydrograph(plotstart, plotend, gaugei, Title= \"Lumped Model\")" - ] - }, - { - "cell_type": "markdown", - "id": "6193fb9c", - "metadata": {}, - "source": [ - "### Save Results" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "88e8fae6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Data is saved successfully\n" - ] - } - ], - "source": [ - "StartDate = \"2009-01-01\"\n", - "EndDate = \"2010-04-20\"\n", - "\n", - "Path = SaveTo + \"Results-Lumped-Model\" + str(dt.datetime.now())[0:10] + \".txt\"\n", - "Coello.saveResults(Result=5, StartDate=StartDate, EndDate=EndDate, Path=Path)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "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.8.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/examples/hydrological-model/Note books/check-03Jiboa-colab.ipynb b/examples/hydrological-model/Note books/check-03Jiboa-colab.ipynb index 90bec8aa1..ba67db414 100644 --- a/examples/hydrological-model/Note books/check-03Jiboa-colab.ipynb +++ b/examples/hydrological-model/Note books/check-03Jiboa-colab.ipynb @@ -1,427 +1,427 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "view-in-github" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "M3wlmF0_eaWn" - }, - "source": [ - "# Jiboa Case Study" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "zf0ye029eaWq" - }, - "source": [ - "This code is prepared to Run the distributed model for jiboa rover in El Salvador\n", - "wher the catchment is consisted os a ustream lake and a volcanic area\n", - "- you have to make the root directory to the examples folder to enable the code\n", - " from reading input files" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "Y8w-WG_3efVB" - }, - "outputs": [], - "source": [ - "# install libraries\n", - "!pip install Numpy\n", - "!pip install pandas\n", - "!pip install pandas\n", - "!pip install gdal\n", - "!pip install fiona\n", - "!pip install shapely\n", - "!pip install geopandas\n", - "!pip install shapely\n", - "!pip install git+https://github.com/MAfarrag/HAPI.git" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 122 + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "M3wlmF0_eaWn" + }, + "source": [ + "# Jiboa Case Study" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "zf0ye029eaWq" + }, + "source": [ + "This code is prepared to Run the distributed model for jiboa rover in El Salvador\n", + "wher the catchment is consisted os a ustream lake and a volcanic area\n", + "- you have to make the root directory to the examples folder to enable the code\n", + " from reading input files" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "Y8w-WG_3efVB" + }, + "outputs": [], + "source": [ + "# install libraries\n", + "!pip install Numpy\n", + "!pip install pandas\n", + "!pip install pandas\n", + "!pip install gdal\n", + "!pip install fiona\n", + "!pip install shapely\n", + "!pip install geopandas\n", + "!pip install shapely\n", + "!pip install git+https://github.com/MAfarrag/HAPI.git" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 122 + }, + "colab_type": "code", + "id": "VX1HFGcwfhEJ", + "outputId": "4f7e30df-4609-4171-ab94-2e4cc4b1ac83" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3aietf%3awg%3aoauth%3a2.0%3aoob&response_type=code&scope=email%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdocs.test%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive.photos.readonly%20https%3a%2f%2fwww.googleapis.com%2fauth%2fpeopleapi.readonly\n", + "\n", + "Enter your authorization code:\n", + "\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\n", + "Mounted at /content/drive\n" + ] + } + ], + "source": [ + "from google.colab import drive\n", + "drive.mount('/content/drive')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "cY-rs6ngeaWs" + }, + "source": [ + "### Download Data\n", + "For the data of this case study you have to download this folder [Jiboa Data](https://drive.google.com/drive/folders/1uyd9mH8pHHUKK9l3bc7QXlsu4EPwy3Mr?usp=sharing) from Google Drive and set it as the working directory instead of the Path defined in the next cell" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "9UYKOoK5eaWt" + }, + "source": [ + "## Import modules" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "colab_type": "code", + "id": "hUTUchZneaWv", + "outputId": "a3e525f7-c7a7-4e0f-a53d-7e8bfd1b81f0" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/statsmodels/tools/_testing.py:19: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.\n", + " import pandas.util.testing as tm\n" + ] + } + ], + "source": [ + "import os\n", + "Path = \"/content/drive/My Drive/\"\n", + "\n", + "os.chdir(Path)\n", + "\n", + "#%library\n", + "import gdal\n", + "import datetime as dt\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# HAPI modules\n", + "from Hapi.run import runHAPIwithLake\n", + "import Hapi.hbv as HBV\n", + "import Hapi.performancecriteria as Pf\n", + "import Hapi.raster as Raster" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "CZlm3E7TeaW0" + }, + "outputs": [], + "source": [ + "# the beginning of the simulation of the calibration data\n", + "start = dt.datetime(2012,6,14,19,00,00)\n", + "end = dt.datetime(2014,11,17,00,00,00)\n", + "calib_end = dt.datetime(2013,12,23,00,00,00)\n", + "\n", + "# paths to the meteorological data\n", + "PrecPath = prec_path = \"inputs/Hapi/meteodata/4000/calib/prec_clipped\"\n", + "Evap_Path = evap_path = \"inputs/Hapi/meteodata/4000/calib/evap_clipped\"\n", + "TempPath = temp_path = \"inputs/Hapi/meteodata/4000/calib/temp_clipped\"\n", + "\n", + "#DemPath = path+\"GIS/4000/dem4000.tif\"\n", + "FlowAccPath = \"inputs/Hapi/GIS/4000_matched/acc4000.tif\"\n", + "FlowDPath = \"inputs/Hapi/GIS/4000_matched/fd4000.tif\"\n", + "ParPath = \"inputs/Hapi/meteodata/4000/parameters/\"\n", + "#ParPath = \"inputs/Hapi/meteodata/4000/\"+\"parameters.txt\"\n", + "Paths=[PrecPath, Evap_Path, TempPath, FlowAccPath, FlowDPath, ]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "R8zrDjIueaW5" + }, + "outputs": [], + "source": [ + "\n", + "#p2=[24, 1530]\n", + "#init_st=[0,5,5,5,0]\n", + "init_st = np.loadtxt(\"inputs/Hapi/meteodata/Initia-jiboa.txt\", usecols=0).tolist()\n", + "snow = 0\n", + "\n", + "\n", + "# lake meteorological data\n", + "ind = pd.date_range(start, end, freq = \"H\" )\n", + "lakedata = pd.read_csv(\"inputs/Hapi/meteodata/lakedata.csv\", index_col = 0)\n", + "lakedata.index = ind\n", + "lakeCalib = lakedata.loc[start:calib_end]\n", + "lakeValid = lakedata.loc[calib_end:end]\n", + "# convert the dataframe into array\n", + "lakeCalibArray = lakeCalib.values\n", + "# take only the plake, et, t and tm columns and exclude the last column\n", + "lakeCalibArray = lakeCalibArray[:,0:-1]\n", + "\n", + "# where the lake discharges its flow (give the indices of the cell)\n", + "lakecell = [2,1] # 4km\n", + "#lakecell = [4,2] # 2km\n", + "#lakecell = [10,4] # 1km\n", + "#lakecell = [19,10] # 500m\n", + "\n", + "LakeParameters = np.loadtxt(\"inputs/Hapi/meteodata/4000/Lakeparameters.txt\").tolist()\n", + "StageDischargeCurve = np.loadtxt(\"inputs/Hapi/meteodata/curve.txt\")\n", + "p2 = [1, 227.31, 133.98, 70.64]\n", + "Lake_init_st = np.loadtxt(\"inputs/Hapi/meteodata/Initia-lake.txt\", usecols=0).tolist()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "I5OdyI_KeaW9" + }, + "source": [ + "# Run the model" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "Brso_XrwiVvV", + "outputId": "fc7852a1-7640-496a-98a5-86d9d6503ef3" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'/content/drive/My Drive'" + ] + }, + "execution_count": 12, + "metadata": { + "tags": [] + }, + "output_type": "execute_result" + } + ], + "source": [ + "os.getcwd()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "mYZRWMT0idd8", + "outputId": "c0bb0eaa-99a0-4ce3-e122-cfff72b8df01" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['Hapi', 'Jiboa.mxd', 'web application', 'processing', 'inputs', 'results.zip']" + ] + }, + "execution_count": 13, + "metadata": { + "tags": [] + }, + "output_type": "execute_result" + } + ], + "source": [ + "os.listdir()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "5xivVaDweaW-" + }, + "outputs": [], + "source": [ + "Sim =pd.DataFrame(index = lakeCalib.index)\n", + "st, Sim['Q'], q_uz_routed, q_lz_trans = runHAPIwithLake(HBV, Paths, ParPath, p2, init_st,\n", + " snow, lakeCalibArray, StageDischargeCurve,\n", + " LakeParameters, lakecell,Lake_init_st)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "kK8Ip1ZkeaXC" + }, + "source": [ + "### Evaluate model performance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "60mTcaPveaXD" + }, + "outputs": [], + "source": [ + "WS = {}\n", + "WS['type'] = 1\n", + "WS['N'] = 3\n", + "ModelMetrics=dict()\n", + "ModelMetrics['CalibErrorHf']=Pf.RMSEHF(lakeCalib['Q'],Sim['Q'],WS['type'],WS['N'],0.75)\n", + "ModelMetrics['CalibErrorLf']=Pf.RMSELF(lakeCalib['Q'],Sim['Q'],WS['type'],WS['N'],0.75)\n", + "ModelMetrics['CalibNSEHf']=Pf.NSE(lakeCalib['Q'],Sim['Q'])\n", + "ModelMetrics['CalibNSELf']=Pf.NSE(np.log(lakeCalib['Q']),np.log(Sim['Q']))\n", + "ModelMetrics['CalibRMSE']=Pf.RMSE(lakeCalib['Q'],Sim['Q'])\n", + "ModelMetrics['CalibKGE']=Pf.KGE(lakeCalib['Q'],Sim['Q'])\n", + "ModelMetrics['CalibWB']=Pf.WB(lakeCalib['Q'],Sim['Q'])\n", + "print(\"RMSE(HF) = \" + str(round(ModelMetrics['CalibErrorHf'],2)))\n", + "print(\"RMSE(LF) = \" + str(round(ModelMetrics['CalibErrorLf'],2)))\n", + "print(\"RMSE = \" + str(round(ModelMetrics['CalibRMSE'],2)))\n", + "print(\"NSE(HF) = \" + str(round(ModelMetrics['CalibNSEHf'],2)))\n", + "print(\"NSE(LF) = \" + str(round(ModelMetrics['CalibNSELf'],2)))\n", + "print(\"KGE = \" + str(round(ModelMetrics['CalibKGE'],2)))\n", + "print(\"WB = \" + str(round(ModelMetrics['CalibWB'],2)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "fvcFNEc5eaXG" + }, + "outputs": [], + "source": [ + "plt.figure(50,figsize=(15,8))\n", + "Sim.Q.plot(color=[(0,0.3,0.7)],linewidth=2.5,label=\"Simulated data\", zorder = 10)\n", + "ax1=lakeCalib['Q'].plot(color='#DC143C',linewidth=2.8,label='Observed data')\n", + "ax1.annotate(\"Model performance\" ,xy=('2012-12-01 00:00:00',20),fontsize=15)\n", + "ax1.annotate(\"RMSE = \" + str(round(ModelMetrics['CalibRMSE'],3)),xy=('2012-12-01 00:00:00',20-1.5),fontsize=15)\n", + "ax1.annotate(\"NSE = \" + str(round(ModelMetrics['CalibNSEHf'],2)),xy=('2012-12-01 00:00:00',20-3),fontsize=15)\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "nTZ63xgeeaXL" + }, + "source": [ + "# Store the result into rasters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "Z_xSCCvJeaXL" + }, + "outputs": [], + "source": [ + "# create list of names\n", + "src=gdal.Open(FlowAccPath)\n", + "\n", + "index=pd.date_range(start,calib_end,freq=\"1H\")\n", + "\n", + "resultspath=\"results/upper_zone_discharge/4000/\"\n", + "names=[resultspath+str(i)[:-6] for i in index]\n", + "names=[i.replace(\"-\",\"_\") for i in names]\n", + "names=[i.replace(\" \",\"_\") for i in names]\n", + "names=[i+\".tif\" for i in names]\n", + "\n", + "\n", + "Raster.RastersLike(src,q_uz_routed[:,:,:-1],names)\n" + ] + } + ], + "metadata": { + "colab": { + "include_colab_link": true, + "name": "03Jiboa-colab.ipynb", + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "Python 3", + "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.7.4" + } }, - "colab_type": "code", - "id": "VX1HFGcwfhEJ", - "outputId": "4f7e30df-4609-4171-ab94-2e4cc4b1ac83" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3aietf%3awg%3aoauth%3a2.0%3aoob&response_type=code&scope=email%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdocs.test%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive.photos.readonly%20https%3a%2f%2fwww.googleapis.com%2fauth%2fpeopleapi.readonly\n", - "\n", - "Enter your authorization code:\n", - "··········\n", - "Mounted at /content/drive\n" - ] - } - ], - "source": [ - "from google.colab import drive\n", - "drive.mount('/content/drive')" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "cY-rs6ngeaWs" - }, - "source": [ - "### Download Data\n", - "For the data of this case study you have to download this folder [Jiboa Data](https://drive.google.com/drive/folders/1uyd9mH8pHHUKK9l3bc7QXlsu4EPwy3Mr?usp=sharing) from Google Drive and set it as the working directory instead of the Path defined in the next cell" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "9UYKOoK5eaWt" - }, - "source": [ - "## Import modules" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 51 - }, - "colab_type": "code", - "id": "hUTUchZneaWv", - "outputId": "a3e525f7-c7a7-4e0f-a53d-7e8bfd1b81f0" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.6/dist-packages/statsmodels/tools/_testing.py:19: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.\n", - " import pandas.util.testing as tm\n" - ] - } - ], - "source": [ - "import os\n", - "Path = \"/content/drive/My Drive/\"\n", - "\n", - "os.chdir(Path)\n", - "\n", - "#%library\n", - "import gdal\n", - "import datetime as dt\n", - "import pandas as pd\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "\n", - "# HAPI modules\n", - "from Hapi.run import runHAPIwithLake\n", - "import Hapi.hbv as HBV\n", - "import Hapi.performancecriteria as Pf\n", - "import Hapi.raster as Raster" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "CZlm3E7TeaW0" - }, - "outputs": [], - "source": [ - "# the beginning of the simulation of the calibration data\n", - "start = dt.datetime(2012,6,14,19,00,00)\n", - "end = dt.datetime(2014,11,17,00,00,00)\n", - "calib_end = dt.datetime(2013,12,23,00,00,00)\n", - "\n", - "# paths to the meteorological data\n", - "PrecPath = prec_path = \"inputs/Hapi/meteodata/4000/calib/prec_clipped\"\n", - "Evap_Path = evap_path = \"inputs/Hapi/meteodata/4000/calib/evap_clipped\"\n", - "TempPath = temp_path = \"inputs/Hapi/meteodata/4000/calib/temp_clipped\"\n", - "\n", - "#DemPath = path+\"GIS/4000/dem4000.tif\"\n", - "FlowAccPath = \"inputs/Hapi/GIS/4000_matched/acc4000.tif\"\n", - "FlowDPath = \"inputs/Hapi/GIS/4000_matched/fd4000.tif\"\n", - "ParPath = \"inputs/Hapi/meteodata/4000/parameters/\"\n", - "#ParPath = \"inputs/Hapi/meteodata/4000/\"+\"parameters.txt\"\n", - "Paths=[PrecPath, Evap_Path, TempPath, FlowAccPath, FlowDPath, ]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "R8zrDjIueaW5" - }, - "outputs": [], - "source": [ - "\n", - "#p2=[24, 1530]\n", - "#init_st=[0,5,5,5,0]\n", - "init_st = np.loadtxt(\"inputs/Hapi/meteodata/Initia-jiboa.txt\", usecols=0).tolist()\n", - "snow = 0\n", - "\n", - "\n", - "# lake meteorological data\n", - "ind = pd.date_range(start, end, freq = \"H\" )\n", - "lakedata = pd.read_csv(\"inputs/Hapi/meteodata/lakedata.csv\", index_col = 0)\n", - "lakedata.index = ind\n", - "lakeCalib = lakedata.loc[start:calib_end]\n", - "lakeValid = lakedata.loc[calib_end:end]\n", - "# convert the dataframe into array\n", - "lakeCalibArray = lakeCalib.values\n", - "# take only the plake, et, t and tm columns and exclude the last column\n", - "lakeCalibArray = lakeCalibArray[:,0:-1]\n", - "\n", - "# where the lake discharges its flow (give the indices of the cell)\n", - "lakecell = [2,1] # 4km\n", - "#lakecell = [4,2] # 2km\n", - "#lakecell = [10,4] # 1km\n", - "#lakecell = [19,10] # 500m\n", - "\n", - "LakeParameters = np.loadtxt(\"inputs/Hapi/meteodata/4000/Lakeparameters.txt\").tolist()\n", - "StageDischargeCurve = np.loadtxt(\"inputs/Hapi/meteodata/curve.txt\")\n", - "p2 = [1, 227.31, 133.98, 70.64]\n", - "Lake_init_st = np.loadtxt(\"inputs/Hapi/meteodata/Initia-lake.txt\", usecols=0).tolist()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "I5OdyI_KeaW9" - }, - "source": [ - "# Run the model" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "colab_type": "code", - "id": "Brso_XrwiVvV", - "outputId": "fc7852a1-7640-496a-98a5-86d9d6503ef3" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'/content/drive/My Drive'" - ] - }, - "execution_count": 12, - "metadata": { - "tags": [] - }, - "output_type": "execute_result" - } - ], - "source": [ - "os.getcwd()" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "colab_type": "code", - "id": "mYZRWMT0idd8", - "outputId": "c0bb0eaa-99a0-4ce3-e122-cfff72b8df01" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['Hapi', 'Jiboa.mxd', 'web application', 'processing', 'inputs', 'results.zip']" - ] - }, - "execution_count": 13, - "metadata": { - "tags": [] - }, - "output_type": "execute_result" - } - ], - "source": [ - "os.listdir()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "5xivVaDweaW-" - }, - "outputs": [], - "source": [ - "Sim =pd.DataFrame(index = lakeCalib.index)\n", - "st, Sim['Q'], q_uz_routed, q_lz_trans = runHAPIwithLake(HBV, Paths, ParPath, p2, init_st,\n", - " snow, lakeCalibArray, StageDischargeCurve,\n", - " LakeParameters, lakecell,Lake_init_st)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "kK8Ip1ZkeaXC" - }, - "source": [ - "### Evaluate model performance" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "60mTcaPveaXD" - }, - "outputs": [], - "source": [ - "WS = {}\n", - "WS['type'] = 1\n", - "WS['N'] = 3\n", - "ModelMetrics=dict()\n", - "ModelMetrics['CalibErrorHf']=Pf.RMSEHF(lakeCalib['Q'],Sim['Q'],WS['type'],WS['N'],0.75)\n", - "ModelMetrics['CalibErrorLf']=Pf.RMSELF(lakeCalib['Q'],Sim['Q'],WS['type'],WS['N'],0.75)\n", - "ModelMetrics['CalibNSEHf']=Pf.NSE(lakeCalib['Q'],Sim['Q'])\n", - "ModelMetrics['CalibNSELf']=Pf.NSE(np.log(lakeCalib['Q']),np.log(Sim['Q']))\n", - "ModelMetrics['CalibRMSE']=Pf.RMSE(lakeCalib['Q'],Sim['Q'])\n", - "ModelMetrics['CalibKGE']=Pf.KGE(lakeCalib['Q'],Sim['Q'])\n", - "ModelMetrics['CalibWB']=Pf.WB(lakeCalib['Q'],Sim['Q'])\n", - "print(\"RMSE(HF) = \" + str(round(ModelMetrics['CalibErrorHf'],2)))\n", - "print(\"RMSE(LF) = \" + str(round(ModelMetrics['CalibErrorLf'],2)))\n", - "print(\"RMSE = \" + str(round(ModelMetrics['CalibRMSE'],2)))\n", - "print(\"NSE(HF) = \" + str(round(ModelMetrics['CalibNSEHf'],2)))\n", - "print(\"NSE(LF) = \" + str(round(ModelMetrics['CalibNSELf'],2)))\n", - "print(\"KGE = \" + str(round(ModelMetrics['CalibKGE'],2)))\n", - "print(\"WB = \" + str(round(ModelMetrics['CalibWB'],2)))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "fvcFNEc5eaXG" - }, - "outputs": [], - "source": [ - "plt.figure(50,figsize=(15,8))\n", - "Sim.Q.plot(color=[(0,0.3,0.7)],linewidth=2.5,label=\"Simulated data\", zorder = 10)\n", - "ax1=lakeCalib['Q'].plot(color='#DC143C',linewidth=2.8,label='Observed data')\n", - "ax1.annotate(\"Model performance\" ,xy=('2012-12-01 00:00:00',20),fontsize=15)\n", - "ax1.annotate(\"RMSE = \" + str(round(ModelMetrics['CalibRMSE'],3)),xy=('2012-12-01 00:00:00',20-1.5),fontsize=15)\n", - "ax1.annotate(\"NSE = \" + str(round(ModelMetrics['CalibNSEHf'],2)),xy=('2012-12-01 00:00:00',20-3),fontsize=15)\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "nTZ63xgeeaXL" - }, - "source": [ - "# Store the result into rasters" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "Z_xSCCvJeaXL" - }, - "outputs": [], - "source": [ - "# create list of names\n", - "src=gdal.Open(FlowAccPath)\n", - "\n", - "index=pd.date_range(start,calib_end,freq=\"1H\")\n", - "\n", - "resultspath=\"results/upper_zone_discharge/4000/\"\n", - "names=[resultspath+str(i)[:-6] for i in index]\n", - "names=[i.replace(\"-\",\"_\") for i in names]\n", - "names=[i.replace(\" \",\"_\") for i in names]\n", - "names=[i+\".tif\" for i in names]\n", - "\n", - "\n", - "Raster.RastersLike(src,q_uz_routed[:,:,:-1],names)\n" - ] - } - ], - "metadata": { - "colab": { - "include_colab_link": true, - "name": "03Jiboa-colab.ipynb", - "provenance": [], - "toc_visible": true - }, - "kernelspec": { - "display_name": "Python 3", - "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.7.4" - } - }, - "nbformat": 4, - "nbformat_minor": 4 + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/examples/hydrological-model/Note books/check-03Jiboa.ipynb b/examples/hydrological-model/Note books/check-03Jiboa.ipynb index f70ecf5f1..b609cefda 100644 --- a/examples/hydrological-model/Note books/check-03Jiboa.ipynb +++ b/examples/hydrological-model/Note books/check-03Jiboa.ipynb @@ -1,284 +1,284 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Jiboa Case Study" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This code is prepared to Run the distributed model for jiboa rover in El Salvador\n", - "wher the catchment is consisted os a ustream lake and a volcanic area\n", - "- you have to make the root directory to the examples folder to enable the code\n", - " from reading input files" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Download Data\n", - "For the data of this case study you have to download this folder [Jiboa Data](https://drive.google.com/drive/folders/1yy6xWwx8Ucc-O72FgVxsuvJBdk3u0sVa?usp=sharing) from Google Drive and set it as the working directory instead of the Path defined in the next cell" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Import modules" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "\n", - "\n", - "Path = \"F:/02Case studies/El Salvador\"\n", - "\n", - "os.chdir(Path)\n", - "\n", - "#%library\n", - "from osgeo import gdal\n", - "import datetime as dt\n", - "import pandas as pd\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "\n", - "# HAPI modules\n", - "from Hapi.rrm import runHAPIwithLake\n", - "import Hapi.rrm.hbv as HBV\n", - "import Hapi.sm.performancecriteria as Pf\n", - "import Hapi.gis.raster as Raster" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# the beginning of the simulation of the calibration data\n", - "start = dt.datetime(2012, 6, 14, 19, 00, 00)\n", - "end = dt.datetime(2014, 11, 17, 00, 00, 00)\n", - "calib_end = dt.datetime(2013, 12, 23, 00, 00, 00)\n", - "\n", - "# paths to the meteorological data\n", - "PrecPath = prec_path = \"inputs/Hapi/meteodata/4000/calib/prec_clipped\"\n", - "Evap_Path = evap_path = \"inputs/Hapi/meteodata/4000/calib/evap_clipped\"\n", - "TempPath = temp_path = \"inputs/Hapi/meteodata/4000/calib/temp_clipped\"\n", - "\n", - "#DemPath = path+\"GIS/4000/dem4000.tif\"\n", - "FlowAccPath = \"inputs/Hapi/GIS/4000_matched/acc4000.tif\"\n", - "FlowDPath = \"inputs/Hapi/GIS/4000_matched/fd4000.tif\"\n", - "ParPath = \"inputs/Hapi/meteodata/4000/parameters/\"\n", - "#ParPath = \"inputs/Hapi/meteodata/4000/\"+\"parameters.txt\"\n", - "Paths = [PrecPath, Evap_Path, TempPath, FlowAccPath, FlowDPath, ]" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "#p2=[24, 1530]\n", - "#init_st=[0,5,5,5,0]\n", - "init_st = np.loadtxt(\"inputs/Hapi/meteodata/Initia-jiboa.txt\", usecols=0).tolist()\n", - "snow = 0\n", - "\n", - "# lake meteorological data\n", - "ind = pd.date_range(start, end, freq=\"H\")\n", - "lakedata = pd.read_csv(\"inputs/Hapi/meteodata/lakedata.csv\", index_col=0)\n", - "lakedata.index = ind\n", - "lakeCalib = lakedata.loc[start:calib_end]\n", - "lakeValid = lakedata.loc[calib_end:end]\n", - "# convert the dataframe into array\n", - "lakeCalibArray = lakeCalib.values\n", - "# take only the plake, et, t and tm columns and exclude the last column\n", - "lakeCalibArray = lakeCalibArray[:, 0:-1]\n", - "\n", - "# where the lake discharges its flow (give the indices of the cell)\n", - "lakecell = [2, 1] # 4km\n", - "#lakecell = [4,2] # 2km\n", - "#lakecell = [10,4] # 1km\n", - "#lakecell = [19,10] # 500m\n", - "\n", - "LakeParameters = np.loadtxt(\"inputs/Hapi/meteodata/4000/Lakeparameters.txt\").tolist()\n", - "StageDischargeCurve = np.loadtxt(\"inputs/Hapi/meteodata/curve.txt\")\n", - "p2 = [1, 227.31, 133.98, 70.64]\n", - "Lake_init_st = np.loadtxt(\"inputs/Hapi/meteodata/Initia-lake.txt\", usecols=0).tolist()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Run the model" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "meteorological data are read successfully\n", - "GIS data are read successfully\n", - "Parameters are read successfully\n" - ] - } - ], - "source": [ - "Sim = pd.DataFrame(index=lakeCalib.index)\n", - "st, Sim['Q'], q_uz_routed, q_lz_trans = runHAPIwithLake(HBV, Paths, ParPath, p2, init_st,\n", - " snow, lakeCalibArray, StageDischargeCurve,\n", - " LakeParameters, lakecell, Lake_init_st)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Evaluate model performance" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "RMSE(HF) = 0.61\n", - "RMSE(LF) = 0.97\n", - "RMSE = 1.61\n", - "NSE(HF) = 0.64\n", - "NSE(LF) = 0.62\n", - "KGE = 0.7\n", - "WB = 99.48\n" - ] - } - ], - "source": [ - "WS = {}\n", - "WS['type'] = 1\n", - "WS['N'] = 3\n", - "ModelMetrics = dict()\n", - "ModelMetrics['CalibErrorHf'] = Pf.RMSEHF(lakeCalib['Q'], Sim['Q'], WS['type'], WS['N'], 0.75)\n", - "ModelMetrics['CalibErrorLf'] = Pf.RMSELF(lakeCalib['Q'], Sim['Q'], WS['type'], WS['N'], 0.75)\n", - "ModelMetrics['CalibNSEHf'] = Pf.NSE(lakeCalib['Q'], Sim['Q'])\n", - "ModelMetrics['CalibNSELf'] = Pf.NSE(np.log(lakeCalib['Q']), np.log(Sim['Q']))\n", - "ModelMetrics['CalibRMSE'] = Pf.RMSE(lakeCalib['Q'], Sim['Q'])\n", - "ModelMetrics['CalibKGE'] = Pf.KGE(lakeCalib['Q'], Sim['Q'])\n", - "ModelMetrics['CalibWB'] = Pf.WB(lakeCalib['Q'], Sim['Q'])\n", - "print(\"RMSE(HF) = \" + str(round(ModelMetrics['CalibErrorHf'], 2)))\n", - "print(\"RMSE(LF) = \" + str(round(ModelMetrics['CalibErrorLf'], 2)))\n", - "print(\"RMSE = \" + str(round(ModelMetrics['CalibRMSE'], 2)))\n", - "print(\"NSE(HF) = \" + str(round(ModelMetrics['CalibNSEHf'], 2)))\n", - "print(\"NSE(LF) = \" + str(round(ModelMetrics['CalibNSELf'], 2)))\n", - "print(\"KGE = \" + str(round(ModelMetrics['CalibKGE'], 2)))\n", - "print(\"WB = \" + str(round(ModelMetrics['CalibWB'], 2)))" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Jiboa Case Study" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This code is prepared to Run the distributed model for jiboa rover in El Salvador\n", + "wher the catchment is consisted os a ustream lake and a volcanic area\n", + "- you have to make the root directory to the examples folder to enable the code\n", + " from reading input files" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Download Data\n", + "For the data of this case study you have to download this folder [Jiboa Data](https://drive.google.com/drive/folders/1yy6xWwx8Ucc-O72FgVxsuvJBdk3u0sVa?usp=sharing) from Google Drive and set it as the working directory instead of the Path defined in the next cell" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Import modules" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "\n", + "Path = \"F:/02Case studies/El Salvador\"\n", + "\n", + "os.chdir(Path)\n", + "\n", + "#%library\n", + "from osgeo import gdal\n", + "import datetime as dt\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# HAPI modules\n", + "from Hapi.rrm import runHAPIwithLake\n", + "import Hapi.rrm.hbv as HBV\n", + "import Hapi.sm.performancecriteria as Pf\n", + "import Hapi.gis.raster as Raster" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# the beginning of the simulation of the calibration data\n", + "start = dt.datetime(2012, 6, 14, 19, 00, 00)\n", + "end = dt.datetime(2014, 11, 17, 00, 00, 00)\n", + "calib_end = dt.datetime(2013, 12, 23, 00, 00, 00)\n", + "\n", + "# paths to the meteorological data\n", + "PrecPath = prec_path = \"inputs/Hapi/meteodata/4000/calib/prec_clipped\"\n", + "Evap_Path = evap_path = \"inputs/Hapi/meteodata/4000/calib/evap_clipped\"\n", + "TempPath = temp_path = \"inputs/Hapi/meteodata/4000/calib/temp_clipped\"\n", + "\n", + "#DemPath = path+\"GIS/4000/dem4000.tif\"\n", + "FlowAccPath = \"inputs/Hapi/GIS/4000_matched/acc4000.tif\"\n", + "FlowDPath = \"inputs/Hapi/GIS/4000_matched/fd4000.tif\"\n", + "ParPath = \"inputs/Hapi/meteodata/4000/parameters/\"\n", + "#ParPath = \"inputs/Hapi/meteodata/4000/\"+\"parameters.txt\"\n", + "Paths = [PrecPath, Evap_Path, TempPath, FlowAccPath, FlowDPath, ]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "#p2=[24, 1530]\n", + "#init_st=[0,5,5,5,0]\n", + "init_st = np.loadtxt(\"inputs/Hapi/meteodata/Initia-jiboa.txt\", usecols=0).tolist()\n", + "snow = 0\n", + "\n", + "# lake meteorological data\n", + "ind = pd.date_range(start, end, freq=\"H\")\n", + "lakedata = pd.read_csv(\"inputs/Hapi/meteodata/lakedata.csv\", index_col=0)\n", + "lakedata.index = ind\n", + "lakeCalib = lakedata.loc[start:calib_end]\n", + "lakeValid = lakedata.loc[calib_end:end]\n", + "# convert the dataframe into array\n", + "lakeCalibArray = lakeCalib.values\n", + "# take only the plake, et, t and tm columns and exclude the last column\n", + "lakeCalibArray = lakeCalibArray[:, 0:-1]\n", + "\n", + "# where the lake discharges its flow (give the indices of the cell)\n", + "lakecell = [2, 1] # 4km\n", + "#lakecell = [4,2] # 2km\n", + "#lakecell = [10,4] # 1km\n", + "#lakecell = [19,10] # 500m\n", + "\n", + "LakeParameters = np.loadtxt(\"inputs/Hapi/meteodata/4000/Lakeparameters.txt\").tolist()\n", + "StageDischargeCurve = np.loadtxt(\"inputs/Hapi/meteodata/curve.txt\")\n", + "p2 = [1, 227.31, 133.98, 70.64]\n", + "Lake_init_st = np.loadtxt(\"inputs/Hapi/meteodata/Initia-lake.txt\", usecols=0).tolist()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Run the model" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "meteorological data are read successfully\n", + "GIS data are read successfully\n", + "Parameters are read successfully\n" + ] + } + ], + "source": [ + "Sim = pd.DataFrame(index=lakeCalib.index)\n", + "st, Sim['Q'], q_uz_routed, q_lz_trans = runHAPIwithLake(HBV, Paths, ParPath, p2, init_st,\n", + " snow, lakeCalibArray, StageDischargeCurve,\n", + " LakeParameters, lakecell, Lake_init_st)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Evaluate model performance" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE(HF) = 0.61\n", + "RMSE(LF) = 0.97\n", + "RMSE = 1.61\n", + "NSE(HF) = 0.64\n", + "NSE(LF) = 0.62\n", + "KGE = 0.7\n", + "WB = 99.48\n" + ] + } + ], + "source": [ + "WS = {}\n", + "WS['type'] = 1\n", + "WS['N'] = 3\n", + "ModelMetrics = dict()\n", + "ModelMetrics['CalibErrorHf'] = Pf.RMSEHF(lakeCalib['Q'], Sim['Q'], WS['type'], WS['N'], 0.75)\n", + "ModelMetrics['CalibErrorLf'] = Pf.RMSELF(lakeCalib['Q'], Sim['Q'], WS['type'], WS['N'], 0.75)\n", + "ModelMetrics['CalibNSEHf'] = Pf.NSE(lakeCalib['Q'], Sim['Q'])\n", + "ModelMetrics['CalibNSELf'] = Pf.NSE(np.log(lakeCalib['Q']), np.log(Sim['Q']))\n", + "ModelMetrics['CalibRMSE'] = Pf.RMSE(lakeCalib['Q'], Sim['Q'])\n", + "ModelMetrics['CalibKGE'] = Pf.KGE(lakeCalib['Q'], Sim['Q'])\n", + "ModelMetrics['CalibWB'] = Pf.WB(lakeCalib['Q'], Sim['Q'])\n", + "print(\"RMSE(HF) = \" + str(round(ModelMetrics['CalibErrorHf'], 2)))\n", + "print(\"RMSE(LF) = \" + str(round(ModelMetrics['CalibErrorLf'], 2)))\n", + "print(\"RMSE = \" + str(round(ModelMetrics['CalibRMSE'], 2)))\n", + "print(\"NSE(HF) = \" + str(round(ModelMetrics['CalibNSEHf'], 2)))\n", + "print(\"NSE(LF) = \" + str(round(ModelMetrics['CalibNSELf'], 2)))\n", + "print(\"KGE = \" + str(round(ModelMetrics['CalibKGE'], 2)))\n", + "print(\"WB = \" + str(round(ModelMetrics['CalibWB'], 2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(50, figsize=(15, 8))\n", + "Sim.Q.plot(color=[(0, 0.3, 0.7)], linewidth=2.5, label=\"Simulated data\", zorder=10)\n", + "ax1 = lakeCalib['Q'].plot(color='#DC143C', linewidth=2.8, label='Observed data')\n", + "ax1.annotate(\"Model performance\", xy=('2012-12-01 00:00:00', 20), fontsize=15)\n", + "ax1.annotate(\"RMSE = \" + str(round(ModelMetrics['CalibRMSE'], 3)), xy=('2012-12-01 00:00:00', 20 - 1.5), fontsize=15)\n", + "ax1.annotate(\"NSE = \" + str(round(ModelMetrics['CalibNSEHf'], 2)), xy=('2012-12-01 00:00:00', 20 - 3), fontsize=15)\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Store the result into rasters" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "# create list of names\n", + "src = gdal.Open(FlowAccPath)\n", + "\n", + "index = pd.date_range(start, calib_end, freq=\"1H\")\n", + "\n", + "resultspath = \"results/upper_zone_discharge/4000/\"\n", + "names = [resultspath + str(i)[:-6] for i in index]\n", + "names = [i.replace(\"-\", \"_\") for i in names]\n", + "names = [i.replace(\" \", \"_\") for i in names]\n", + "names = [i + \".tif\" for i in names]\n", + "\n", + "Raster.RastersLike(src, q_uz_routed[:, :, :-1], names)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.7.4" + } }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure(50, figsize=(15, 8))\n", - "Sim.Q.plot(color=[(0, 0.3, 0.7)], linewidth=2.5, label=\"Simulated data\", zorder=10)\n", - "ax1 = lakeCalib['Q'].plot(color='#DC143C', linewidth=2.8, label='Observed data')\n", - "ax1.annotate(\"Model performance\", xy=('2012-12-01 00:00:00', 20), fontsize=15)\n", - "ax1.annotate(\"RMSE = \" + str(round(ModelMetrics['CalibRMSE'], 3)), xy=('2012-12-01 00:00:00', 20 - 1.5), fontsize=15)\n", - "ax1.annotate(\"NSE = \" + str(round(ModelMetrics['CalibNSEHf'], 2)), xy=('2012-12-01 00:00:00', 20 - 3), fontsize=15)\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Store the result into rasters" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [], - "source": [ - "# create list of names\n", - "src = gdal.Open(FlowAccPath)\n", - "\n", - "index = pd.date_range(start, calib_end, freq=\"1H\")\n", - "\n", - "resultspath = \"results/upper_zone_discharge/4000/\"\n", - "names = [resultspath + str(i)[:-6] for i in index]\n", - "names = [i.replace(\"-\", \"_\") for i in names]\n", - "names = [i.replace(\" \", \"_\") for i in names]\n", - "names = [i + \".tif\" for i in names]\n", - "\n", - "Raster.RastersLike(src, q_uz_routed[:, :, :-1], names)\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "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.7.4" - } - }, - "nbformat": 4, - "nbformat_minor": 4 + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/examples/hydrological-model/Note books/check-colab/Jiboa-distributed-model-muskingum-lake-colab.ipynb b/examples/hydrological-model/Note books/check-colab/Jiboa-distributed-model-muskingum-lake-colab.ipynb index 59b0f3320..d27f5a60b 100644 --- a/examples/hydrological-model/Note books/check-colab/Jiboa-distributed-model-muskingum-lake-colab.ipynb +++ b/examples/hydrological-model/Note books/check-colab/Jiboa-distributed-model-muskingum-lake-colab.ipynb @@ -1,427 +1,427 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "view-in-github" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "M3wlmF0_eaWn" - }, - "source": [ - "# Jiboa Case Study" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "zf0ye029eaWq" - }, - "source": [ - "This code is prepared to Run the distributed model for jiboa rover in El Salvador\n", - "wher the catchment is consisted os a ustream lake and a volcanic area\n", - "- you have to make the root directory to the examples folder to enable the code\n", - " from reading input files" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "Y8w-WG_3efVB" - }, - "outputs": [], - "source": [ - "# install libraries\n", - "!pip install Numpy\n", - "!pip install pandas\n", - "!pip install pandas\n", - "!pip install gdal\n", - "!pip install fiona\n", - "!pip install shapely\n", - "!pip install geopandas\n", - "!pip install shapely\n", - "!pip install git+https://github.com/MAfarrag/HAPI.git" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 122 + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "view-in-github" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "M3wlmF0_eaWn" + }, + "source": [ + "# Jiboa Case Study" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "zf0ye029eaWq" + }, + "source": [ + "This code is prepared to Run the distributed model for jiboa rover in El Salvador\n", + "wher the catchment is consisted os a ustream lake and a volcanic area\n", + "- you have to make the root directory to the examples folder to enable the code\n", + " from reading input files" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "Y8w-WG_3efVB" + }, + "outputs": [], + "source": [ + "# install libraries\n", + "!pip install Numpy\n", + "!pip install pandas\n", + "!pip install pandas\n", + "!pip install gdal\n", + "!pip install fiona\n", + "!pip install shapely\n", + "!pip install geopandas\n", + "!pip install shapely\n", + "!pip install git+https://github.com/MAfarrag/HAPI.git" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 122 + }, + "colab_type": "code", + "id": "VX1HFGcwfhEJ", + "outputId": "4f7e30df-4609-4171-ab94-2e4cc4b1ac83" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3aietf%3awg%3aoauth%3a2.0%3aoob&response_type=code&scope=email%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdocs.test%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive.photos.readonly%20https%3a%2f%2fwww.googleapis.com%2fauth%2fpeopleapi.readonly\n", + "\n", + "Enter your authorization code:\n", + "\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\u00b7\n", + "Mounted at /content/drive\n" + ] + } + ], + "source": [ + "from google.colab import drive\n", + "drive.mount('/content/drive')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "cY-rs6ngeaWs" + }, + "source": [ + "### Download Data\n", + "For the data of this case study you have to download this folder [Jiboa Data](https://drive.google.com/drive/folders/1uyd9mH8pHHUKK9l3bc7QXlsu4EPwy3Mr?usp=sharing) from Google Drive and set it as the working directory instead of the Path defined in the next cell" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "9UYKOoK5eaWt" + }, + "source": [ + "## Import modules" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 51 + }, + "colab_type": "code", + "id": "hUTUchZneaWv", + "outputId": "a3e525f7-c7a7-4e0f-a53d-7e8bfd1b81f0" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.6/dist-packages/statsmodels/tools/_testing.py:19: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.\n", + " import pandas.util.testing as tm\n" + ] + } + ], + "source": [ + "import os\n", + "Path = \"/content/drive/My Drive/\"\n", + "\n", + "os.chdir(Path)\n", + "\n", + "#%library\n", + "from osgeo import gdal\n", + "import datetime as dt\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# HAPI modules\n", + "from Hapi.run import runHAPIwithLake\n", + "import Hapi.rrm.hbv as HBV\n", + "import Hapi.sm.performancecriteria as Pf\n", + "import Hapi.gis.raster as Raster" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "CZlm3E7TeaW0" + }, + "outputs": [], + "source": [ + "# the beginning of the simulation of the calibration data\n", + "start = dt.datetime(2012,6,14,19,00,00)\n", + "end = dt.datetime(2014,11,17,00,00,00)\n", + "calib_end = dt.datetime(2013,12,23,00,00,00)\n", + "\n", + "# paths to the meteorological data\n", + "PrecPath = prec_path = \"inputs/Hapi/meteodata/4000/calib/prec_clipped\"\n", + "Evap_Path = evap_path = \"inputs/Hapi/meteodata/4000/calib/evap_clipped\"\n", + "TempPath = temp_path = \"inputs/Hapi/meteodata/4000/calib/temp_clipped\"\n", + "\n", + "#DemPath = path+\"GIS/4000/dem4000.tif\"\n", + "FlowAccPath = \"inputs/Hapi/GIS/4000_matched/acc4000.tif\"\n", + "FlowDPath = \"inputs/Hapi/GIS/4000_matched/fd4000.tif\"\n", + "ParPath = \"inputs/Hapi/meteodata/4000/parameters/\"\n", + "#ParPath = \"inputs/Hapi/meteodata/4000/\"+\"parameters.txt\"\n", + "Paths=[PrecPath, Evap_Path, TempPath, FlowAccPath, FlowDPath, ]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "R8zrDjIueaW5" + }, + "outputs": [], + "source": [ + "\n", + "#p2=[24, 1530]\n", + "#init_st=[0,5,5,5,0]\n", + "init_st = np.loadtxt(\"inputs/Hapi/meteodata/Initia-jiboa.txt\", usecols=0).tolist()\n", + "snow = 0\n", + "\n", + "\n", + "# lake meteorological data\n", + "ind = pd.date_range(start, end, freq = \"H\" )\n", + "lakedata = pd.read_csv(\"inputs/Hapi/meteodata/lakedata.csv\", index_col = 0)\n", + "lakedata.index = ind\n", + "lakeCalib = lakedata.loc[start:calib_end]\n", + "lakeValid = lakedata.loc[calib_end:end]\n", + "# convert the dataframe into array\n", + "lakeCalibArray = lakeCalib.values\n", + "# take only the plake, et, t and tm columns and exclude the last column\n", + "lakeCalibArray = lakeCalibArray[:,0:-1]\n", + "\n", + "# where the lake discharges its flow (give the indices of the cell)\n", + "lakecell = [2,1] # 4km\n", + "#lakecell = [4,2] # 2km\n", + "#lakecell = [10,4] # 1km\n", + "#lakecell = [19,10] # 500m\n", + "\n", + "LakeParameters = np.loadtxt(\"inputs/Hapi/meteodata/4000/Lakeparameters.txt\").tolist()\n", + "StageDischargeCurve = np.loadtxt(\"inputs/Hapi/meteodata/curve.txt\")\n", + "p2 = [1, 227.31, 133.98, 70.64]\n", + "Lake_init_st = np.loadtxt(\"inputs/Hapi/meteodata/Initia-lake.txt\", usecols=0).tolist()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "I5OdyI_KeaW9" + }, + "source": [ + "# Run the model" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "Brso_XrwiVvV", + "outputId": "fc7852a1-7640-496a-98a5-86d9d6503ef3" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'/content/drive/My Drive'" + ] + }, + "execution_count": 12, + "metadata": { + "tags": [] + }, + "output_type": "execute_result" + } + ], + "source": [ + "os.getcwd()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "mYZRWMT0idd8", + "outputId": "c0bb0eaa-99a0-4ce3-e122-cfff72b8df01" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['Hapi', 'Jiboa.mxd', 'web application', 'processing', 'inputs', 'results.zip']" + ] + }, + "execution_count": 13, + "metadata": { + "tags": [] + }, + "output_type": "execute_result" + } + ], + "source": [ + "os.listdir()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "5xivVaDweaW-" + }, + "outputs": [], + "source": [ + "Sim =pd.DataFrame(index = lakeCalib.index)\n", + "st, Sim['Q'], q_uz_routed, q_lz_trans = runHAPIwithLake(HBV, Paths, ParPath, p2, init_st,\n", + " snow, lakeCalibArray, StageDischargeCurve,\n", + " LakeParameters, lakecell,Lake_init_st)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "kK8Ip1ZkeaXC" + }, + "source": [ + "### Evaluate model performance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "60mTcaPveaXD" + }, + "outputs": [], + "source": [ + "WS = {}\n", + "WS['type'] = 1\n", + "WS['N'] = 3\n", + "ModelMetrics=dict()\n", + "ModelMetrics['CalibErrorHf']=Pf.RMSEHF(lakeCalib['Q'],Sim['Q'],WS['type'],WS['N'],0.75)\n", + "ModelMetrics['CalibErrorLf']=Pf.RMSELF(lakeCalib['Q'],Sim['Q'],WS['type'],WS['N'],0.75)\n", + "ModelMetrics['CalibNSEHf']=Pf.NSE(lakeCalib['Q'],Sim['Q'])\n", + "ModelMetrics['CalibNSELf']=Pf.NSE(np.log(lakeCalib['Q']),np.log(Sim['Q']))\n", + "ModelMetrics['CalibRMSE']=Pf.RMSE(lakeCalib['Q'],Sim['Q'])\n", + "ModelMetrics['CalibKGE']=Pf.KGE(lakeCalib['Q'],Sim['Q'])\n", + "ModelMetrics['CalibWB']=Pf.WB(lakeCalib['Q'],Sim['Q'])\n", + "print(\"RMSE(HF) = \" + str(round(ModelMetrics['CalibErrorHf'],2)))\n", + "print(\"RMSE(LF) = \" + str(round(ModelMetrics['CalibErrorLf'],2)))\n", + "print(\"RMSE = \" + str(round(ModelMetrics['CalibRMSE'],2)))\n", + "print(\"NSE(HF) = \" + str(round(ModelMetrics['CalibNSEHf'],2)))\n", + "print(\"NSE(LF) = \" + str(round(ModelMetrics['CalibNSELf'],2)))\n", + "print(\"KGE = \" + str(round(ModelMetrics['CalibKGE'],2)))\n", + "print(\"WB = \" + str(round(ModelMetrics['CalibWB'],2)))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "fvcFNEc5eaXG" + }, + "outputs": [], + "source": [ + "plt.figure(50,figsize=(15,8))\n", + "Sim.Q.plot(color=[(0,0.3,0.7)],linewidth=2.5,label=\"Simulated data\", zorder = 10)\n", + "ax1=lakeCalib['Q'].plot(color='#DC143C',linewidth=2.8,label='Observed data')\n", + "ax1.annotate(\"Model performance\" ,xy=('2012-12-01 00:00:00',20),fontsize=15)\n", + "ax1.annotate(\"RMSE = \" + str(round(ModelMetrics['CalibRMSE'],3)),xy=('2012-12-01 00:00:00',20-1.5),fontsize=15)\n", + "ax1.annotate(\"NSE = \" + str(round(ModelMetrics['CalibNSEHf'],2)),xy=('2012-12-01 00:00:00',20-3),fontsize=15)\n", + "plt.legend()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "nTZ63xgeeaXL" + }, + "source": [ + "# Store the result into rasters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "Z_xSCCvJeaXL" + }, + "outputs": [], + "source": [ + "# create list of names\n", + "src=gdal.Open(FlowAccPath)\n", + "\n", + "index=pd.date_range(start,calib_end,freq=\"1H\")\n", + "\n", + "resultspath=\"results/upper_zone_discharge/4000/\"\n", + "names=[resultspath+str(i)[:-6] for i in index]\n", + "names=[i.replace(\"-\",\"_\") for i in names]\n", + "names=[i.replace(\" \",\"_\") for i in names]\n", + "names=[i+\".tif\" for i in names]\n", + "\n", + "\n", + "Raster.RastersLike(src,q_uz_routed[:,:,:-1],names)\n" + ] + } + ], + "metadata": { + "colab": { + "include_colab_link": true, + "name": "03Jiboa-colab.ipynb", + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "Python 3", + "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.7.4" + } }, - "colab_type": "code", - "id": "VX1HFGcwfhEJ", - "outputId": "4f7e30df-4609-4171-ab94-2e4cc4b1ac83" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3aietf%3awg%3aoauth%3a2.0%3aoob&response_type=code&scope=email%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdocs.test%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive.photos.readonly%20https%3a%2f%2fwww.googleapis.com%2fauth%2fpeopleapi.readonly\n", - "\n", - "Enter your authorization code:\n", - "··········\n", - "Mounted at /content/drive\n" - ] - } - ], - "source": [ - "from google.colab import drive\n", - "drive.mount('/content/drive')" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "cY-rs6ngeaWs" - }, - "source": [ - "### Download Data\n", - "For the data of this case study you have to download this folder [Jiboa Data](https://drive.google.com/drive/folders/1uyd9mH8pHHUKK9l3bc7QXlsu4EPwy3Mr?usp=sharing) from Google Drive and set it as the working directory instead of the Path defined in the next cell" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "9UYKOoK5eaWt" - }, - "source": [ - "## Import modules" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 51 - }, - "colab_type": "code", - "id": "hUTUchZneaWv", - "outputId": "a3e525f7-c7a7-4e0f-a53d-7e8bfd1b81f0" - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/usr/local/lib/python3.6/dist-packages/statsmodels/tools/_testing.py:19: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead.\n", - " import pandas.util.testing as tm\n" - ] - } - ], - "source": [ - "import os\n", - "Path = \"/content/drive/My Drive/\"\n", - "\n", - "os.chdir(Path)\n", - "\n", - "#%library\n", - "from osgeo import gdal\n", - "import datetime as dt\n", - "import pandas as pd\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "\n", - "# HAPI modules\n", - "from Hapi.run import runHAPIwithLake\n", - "import Hapi.rrm.hbv as HBV\n", - "import Hapi.sm.performancecriteria as Pf\n", - "import Hapi.gis.raster as Raster" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "CZlm3E7TeaW0" - }, - "outputs": [], - "source": [ - "# the beginning of the simulation of the calibration data\n", - "start = dt.datetime(2012,6,14,19,00,00)\n", - "end = dt.datetime(2014,11,17,00,00,00)\n", - "calib_end = dt.datetime(2013,12,23,00,00,00)\n", - "\n", - "# paths to the meteorological data\n", - "PrecPath = prec_path = \"inputs/Hapi/meteodata/4000/calib/prec_clipped\"\n", - "Evap_Path = evap_path = \"inputs/Hapi/meteodata/4000/calib/evap_clipped\"\n", - "TempPath = temp_path = \"inputs/Hapi/meteodata/4000/calib/temp_clipped\"\n", - "\n", - "#DemPath = path+\"GIS/4000/dem4000.tif\"\n", - "FlowAccPath = \"inputs/Hapi/GIS/4000_matched/acc4000.tif\"\n", - "FlowDPath = \"inputs/Hapi/GIS/4000_matched/fd4000.tif\"\n", - "ParPath = \"inputs/Hapi/meteodata/4000/parameters/\"\n", - "#ParPath = \"inputs/Hapi/meteodata/4000/\"+\"parameters.txt\"\n", - "Paths=[PrecPath, Evap_Path, TempPath, FlowAccPath, FlowDPath, ]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "R8zrDjIueaW5" - }, - "outputs": [], - "source": [ - "\n", - "#p2=[24, 1530]\n", - "#init_st=[0,5,5,5,0]\n", - "init_st = np.loadtxt(\"inputs/Hapi/meteodata/Initia-jiboa.txt\", usecols=0).tolist()\n", - "snow = 0\n", - "\n", - "\n", - "# lake meteorological data\n", - "ind = pd.date_range(start, end, freq = \"H\" )\n", - "lakedata = pd.read_csv(\"inputs/Hapi/meteodata/lakedata.csv\", index_col = 0)\n", - "lakedata.index = ind\n", - "lakeCalib = lakedata.loc[start:calib_end]\n", - "lakeValid = lakedata.loc[calib_end:end]\n", - "# convert the dataframe into array\n", - "lakeCalibArray = lakeCalib.values\n", - "# take only the plake, et, t and tm columns and exclude the last column\n", - "lakeCalibArray = lakeCalibArray[:,0:-1]\n", - "\n", - "# where the lake discharges its flow (give the indices of the cell)\n", - "lakecell = [2,1] # 4km\n", - "#lakecell = [4,2] # 2km\n", - "#lakecell = [10,4] # 1km\n", - "#lakecell = [19,10] # 500m\n", - "\n", - "LakeParameters = np.loadtxt(\"inputs/Hapi/meteodata/4000/Lakeparameters.txt\").tolist()\n", - "StageDischargeCurve = np.loadtxt(\"inputs/Hapi/meteodata/curve.txt\")\n", - "p2 = [1, 227.31, 133.98, 70.64]\n", - "Lake_init_st = np.loadtxt(\"inputs/Hapi/meteodata/Initia-lake.txt\", usecols=0).tolist()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "I5OdyI_KeaW9" - }, - "source": [ - "# Run the model" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "colab_type": "code", - "id": "Brso_XrwiVvV", - "outputId": "fc7852a1-7640-496a-98a5-86d9d6503ef3" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'/content/drive/My Drive'" - ] - }, - "execution_count": 12, - "metadata": { - "tags": [] - }, - "output_type": "execute_result" - } - ], - "source": [ - "os.getcwd()" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "colab_type": "code", - "id": "mYZRWMT0idd8", - "outputId": "c0bb0eaa-99a0-4ce3-e122-cfff72b8df01" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['Hapi', 'Jiboa.mxd', 'web application', 'processing', 'inputs', 'results.zip']" - ] - }, - "execution_count": 13, - "metadata": { - "tags": [] - }, - "output_type": "execute_result" - } - ], - "source": [ - "os.listdir()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "5xivVaDweaW-" - }, - "outputs": [], - "source": [ - "Sim =pd.DataFrame(index = lakeCalib.index)\n", - "st, Sim['Q'], q_uz_routed, q_lz_trans = runHAPIwithLake(HBV, Paths, ParPath, p2, init_st,\n", - " snow, lakeCalibArray, StageDischargeCurve,\n", - " LakeParameters, lakecell,Lake_init_st)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "kK8Ip1ZkeaXC" - }, - "source": [ - "### Evaluate model performance" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "60mTcaPveaXD" - }, - "outputs": [], - "source": [ - "WS = {}\n", - "WS['type'] = 1\n", - "WS['N'] = 3\n", - "ModelMetrics=dict()\n", - "ModelMetrics['CalibErrorHf']=Pf.RMSEHF(lakeCalib['Q'],Sim['Q'],WS['type'],WS['N'],0.75)\n", - "ModelMetrics['CalibErrorLf']=Pf.RMSELF(lakeCalib['Q'],Sim['Q'],WS['type'],WS['N'],0.75)\n", - "ModelMetrics['CalibNSEHf']=Pf.NSE(lakeCalib['Q'],Sim['Q'])\n", - "ModelMetrics['CalibNSELf']=Pf.NSE(np.log(lakeCalib['Q']),np.log(Sim['Q']))\n", - "ModelMetrics['CalibRMSE']=Pf.RMSE(lakeCalib['Q'],Sim['Q'])\n", - "ModelMetrics['CalibKGE']=Pf.KGE(lakeCalib['Q'],Sim['Q'])\n", - "ModelMetrics['CalibWB']=Pf.WB(lakeCalib['Q'],Sim['Q'])\n", - "print(\"RMSE(HF) = \" + str(round(ModelMetrics['CalibErrorHf'],2)))\n", - "print(\"RMSE(LF) = \" + str(round(ModelMetrics['CalibErrorLf'],2)))\n", - "print(\"RMSE = \" + str(round(ModelMetrics['CalibRMSE'],2)))\n", - "print(\"NSE(HF) = \" + str(round(ModelMetrics['CalibNSEHf'],2)))\n", - "print(\"NSE(LF) = \" + str(round(ModelMetrics['CalibNSELf'],2)))\n", - "print(\"KGE = \" + str(round(ModelMetrics['CalibKGE'],2)))\n", - "print(\"WB = \" + str(round(ModelMetrics['CalibWB'],2)))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "fvcFNEc5eaXG" - }, - "outputs": [], - "source": [ - "plt.figure(50,figsize=(15,8))\n", - "Sim.Q.plot(color=[(0,0.3,0.7)],linewidth=2.5,label=\"Simulated data\", zorder = 10)\n", - "ax1=lakeCalib['Q'].plot(color='#DC143C',linewidth=2.8,label='Observed data')\n", - "ax1.annotate(\"Model performance\" ,xy=('2012-12-01 00:00:00',20),fontsize=15)\n", - "ax1.annotate(\"RMSE = \" + str(round(ModelMetrics['CalibRMSE'],3)),xy=('2012-12-01 00:00:00',20-1.5),fontsize=15)\n", - "ax1.annotate(\"NSE = \" + str(round(ModelMetrics['CalibNSEHf'],2)),xy=('2012-12-01 00:00:00',20-3),fontsize=15)\n", - "plt.legend()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "nTZ63xgeeaXL" - }, - "source": [ - "# Store the result into rasters" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "Z_xSCCvJeaXL" - }, - "outputs": [], - "source": [ - "# create list of names\n", - "src=gdal.Open(FlowAccPath)\n", - "\n", - "index=pd.date_range(start,calib_end,freq=\"1H\")\n", - "\n", - "resultspath=\"results/upper_zone_discharge/4000/\"\n", - "names=[resultspath+str(i)[:-6] for i in index]\n", - "names=[i.replace(\"-\",\"_\") for i in names]\n", - "names=[i.replace(\" \",\"_\") for i in names]\n", - "names=[i+\".tif\" for i in names]\n", - "\n", - "\n", - "Raster.RastersLike(src,q_uz_routed[:,:,:-1],names)\n" - ] - } - ], - "metadata": { - "colab": { - "include_colab_link": true, - "name": "03Jiboa-colab.ipynb", - "provenance": [], - "toc_visible": true - }, - "kernelspec": { - "display_name": "Python 3", - "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.7.4" - } - }, - "nbformat": 4, - "nbformat_minor": 4 + "nbformat": 4, + "nbformat_minor": 4 } diff --git a/examples/hydrological-model/Note books/check-colab/Jiboa.ipynb b/examples/hydrological-model/Note books/check-colab/Jiboa.ipynb index 68c55787a..287f25835 100644 --- a/examples/hydrological-model/Note books/check-colab/Jiboa.ipynb +++ b/examples/hydrological-model/Note books/check-colab/Jiboa.ipynb @@ -1,581 +1,581 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "Jiboa-colab.ipynb", - "provenance": [], - "collapsed_sections": [], - "toc_visible": true - }, - "kernelspec": { - "display_name": "Python 3", - "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.7.4" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "M3wlmF0_eaWn" - }, - "source": [ - "# Jiboa Case Study" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "zf0ye029eaWq" - }, - "source": [ - "This code is prepared to Run the distributed model for jiboa rover in El Salvador\n", - "wher the catchment is consisted os a ustream lake and a volcanic area\n", - "- you have to make the root directory to the examples folder to enable the code\n", - " from reading input files" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Jiboa-colab.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "Python 3", + "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.7.4" + } }, - "id": "lppgfy9UBhAk", - "outputId": "fda23dfc-c1c1-4afd-84ef-1ce7c6085da4" - }, - "source": [ - "! pip install gdal\n", - "! pip install affine\n", - "! pip install fiona\n", - "! pip install proj\n", - "! pip install pyproj\n", - "! pip install pandas\n", - "! pip install geopandas\n", - "! pip install matplotlib-base\n", - "! pip install python\n", - "! pip install scipy\n", - "! pip install shapely\n", - "! pip install statsmodels\n", - "! pip install rasterio\n", - "! pip install rasterstats\n", - "! pip install oasis\n", - "! pip install netCDF4\n", - "! pip install scikit-learn\n", - "! pip install scikit-image\n", - "! pip install ecmwf-api-client\n", - "! pip install joblib\n", - "!pip install git+https://github.com/MAfarrag/HAPI.git" - ], - "execution_count": 43, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Requirement already satisfied: gdal in /usr/local/lib/python3.7/dist-packages (2.2.2)\n", - "Requirement already satisfied: affine in /usr/local/lib/python3.7/dist-packages (2.3.0)\n", - "Requirement already satisfied: fiona in /usr/local/lib/python3.7/dist-packages (1.8.19)\n", - "Requirement already satisfied: six>=1.7 in /usr/local/lib/python3.7/dist-packages (from fiona) (1.15.0)\n", - "Requirement already satisfied: click-plugins>=1.0 in /usr/local/lib/python3.7/dist-packages (from fiona) (1.1.1)\n", - "Requirement already satisfied: click<8,>=4.0 in /usr/local/lib/python3.7/dist-packages (from fiona) (7.1.2)\n", - "Requirement already satisfied: cligj>=0.5 in /usr/local/lib/python3.7/dist-packages (from fiona) (0.7.1)\n", - "Requirement already satisfied: attrs>=17 in /usr/local/lib/python3.7/dist-packages (from fiona) (20.3.0)\n", - "Requirement already satisfied: certifi in /usr/local/lib/python3.7/dist-packages (from fiona) (2020.12.5)\n", - "Requirement already satisfied: munch in /usr/local/lib/python3.7/dist-packages (from fiona) (2.5.0)\n", - "Requirement already satisfied: proj in /usr/local/lib/python3.7/dist-packages (0.2.0)\n", - "Requirement already satisfied: arrow>=0.15.6 in /usr/local/lib/python3.7/dist-packages (from proj) (1.0.3)\n", - "Requirement already satisfied: click>=7.1.2 in /usr/local/lib/python3.7/dist-packages (from proj) (7.1.2)\n", - "Requirement already satisfied: python-dateutil>=2.7.0 in /usr/local/lib/python3.7/dist-packages (from arrow>=0.15.6->proj) (2.8.1)\n", - "Requirement already satisfied: typing-extensions; python_version < \"3.8\" in /usr/local/lib/python3.7/dist-packages (from arrow>=0.15.6->proj) (3.7.4.3)\n", - "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.7.0->arrow>=0.15.6->proj) (1.15.0)\n", - "Requirement already satisfied: pyproj in /usr/local/lib/python3.7/dist-packages (3.0.1)\n", - "Requirement already satisfied: certifi in /usr/local/lib/python3.7/dist-packages (from pyproj) (2020.12.5)\n", - "Requirement already satisfied: pandas in /usr/local/lib/python3.7/dist-packages (1.1.5)\n", - "Requirement already satisfied: numpy>=1.15.4 in /usr/local/lib/python3.7/dist-packages (from pandas) (1.19.5)\n", - "Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.7/dist-packages (from pandas) (2018.9)\n", - "Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas) (2.8.1)\n", - "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.7.3->pandas) (1.15.0)\n", - "Requirement already satisfied: geopandas in /usr/local/lib/python3.7/dist-packages (0.9.0)\n", - "Requirement already satisfied: pyproj>=2.2.0 in /usr/local/lib/python3.7/dist-packages (from geopandas) (3.0.1)\n", - "Requirement already satisfied: pandas>=0.24.0 in /usr/local/lib/python3.7/dist-packages (from geopandas) (1.1.5)\n", - "Requirement already satisfied: fiona>=1.8 in /usr/local/lib/python3.7/dist-packages (from geopandas) (1.8.19)\n", - "Requirement already satisfied: shapely>=1.6 in /usr/local/lib/python3.7/dist-packages (from geopandas) (1.7.1)\n", - "Requirement already satisfied: certifi in /usr/local/lib/python3.7/dist-packages (from pyproj>=2.2.0->geopandas) (2020.12.5)\n", - "Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.7/dist-packages (from pandas>=0.24.0->geopandas) (2018.9)\n", - "Requirement already satisfied: numpy>=1.15.4 in /usr/local/lib/python3.7/dist-packages (from pandas>=0.24.0->geopandas) (1.19.5)\n", - "Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas>=0.24.0->geopandas) (2.8.1)\n", - "Requirement already satisfied: click-plugins>=1.0 in /usr/local/lib/python3.7/dist-packages (from fiona>=1.8->geopandas) (1.1.1)\n", - "Requirement already satisfied: cligj>=0.5 in /usr/local/lib/python3.7/dist-packages (from fiona>=1.8->geopandas) (0.7.1)\n", - "Requirement already satisfied: six>=1.7 in /usr/local/lib/python3.7/dist-packages (from fiona>=1.8->geopandas) (1.15.0)\n", - "Requirement already satisfied: click<8,>=4.0 in /usr/local/lib/python3.7/dist-packages (from fiona>=1.8->geopandas) (7.1.2)\n", - "Requirement already satisfied: munch in /usr/local/lib/python3.7/dist-packages (from fiona>=1.8->geopandas) (2.5.0)\n", - "Requirement already satisfied: attrs>=17 in /usr/local/lib/python3.7/dist-packages (from fiona>=1.8->geopandas) (20.3.0)\n", - "\u001B[31mERROR: Could not find a version that satisfies the requirement matplotlib-base (from versions: none)\u001B[0m\n", - "\u001B[31mERROR: No matching distribution found for matplotlib-base\u001B[0m\n", - "\u001B[31mERROR: Could not find a version that satisfies the requirement python (from versions: none)\u001B[0m\n", - "\u001B[31mERROR: No matching distribution found for python\u001B[0m\n", - "Requirement already satisfied: scipy in /usr/local/lib/python3.7/dist-packages (1.4.1)\n", - "Requirement already satisfied: numpy>=1.13.3 in /usr/local/lib/python3.7/dist-packages (from scipy) (1.19.5)\n", - "Requirement already satisfied: shapely in /usr/local/lib/python3.7/dist-packages (1.7.1)\n", - "Requirement already satisfied: statsmodels in /usr/local/lib/python3.7/dist-packages (0.10.2)\n", - "Requirement already satisfied: scipy>=0.18 in /usr/local/lib/python3.7/dist-packages (from statsmodels) (1.4.1)\n", - "Requirement already satisfied: numpy>=1.11 in /usr/local/lib/python3.7/dist-packages (from statsmodels) (1.19.5)\n", - "Requirement already satisfied: pandas>=0.19 in /usr/local/lib/python3.7/dist-packages (from statsmodels) (1.1.5)\n", - "Requirement already satisfied: patsy>=0.4.0 in /usr/local/lib/python3.7/dist-packages (from statsmodels) (0.5.1)\n", - "Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.7/dist-packages (from pandas>=0.19->statsmodels) (2018.9)\n", - "Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas>=0.19->statsmodels) (2.8.1)\n", - "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from patsy>=0.4.0->statsmodels) (1.15.0)\n", - "Requirement already satisfied: rasterio in /usr/local/lib/python3.7/dist-packages (1.2.2)\n", - "Requirement already satisfied: cligj>=0.5 in /usr/local/lib/python3.7/dist-packages (from rasterio) (0.7.1)\n", - "Requirement already satisfied: click<8,>=4.0 in /usr/local/lib/python3.7/dist-packages (from rasterio) (7.1.2)\n", - "Requirement already satisfied: snuggs>=1.4.1 in /usr/local/lib/python3.7/dist-packages (from rasterio) (1.4.7)\n", - "Requirement already satisfied: attrs in /usr/local/lib/python3.7/dist-packages (from rasterio) (20.3.0)\n", - "Requirement already satisfied: certifi in /usr/local/lib/python3.7/dist-packages (from rasterio) (2020.12.5)\n", - "Requirement already satisfied: affine in /usr/local/lib/python3.7/dist-packages (from rasterio) (2.3.0)\n", - "Requirement already satisfied: click-plugins in /usr/local/lib/python3.7/dist-packages (from rasterio) (1.1.1)\n", - "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from rasterio) (1.19.5)\n", - "Requirement already satisfied: pyparsing>=2.1.6 in /usr/local/lib/python3.7/dist-packages (from snuggs>=1.4.1->rasterio) (2.4.7)\n", - "Requirement already satisfied: rasterstats in /usr/local/lib/python3.7/dist-packages (0.15.0)\n", - "Requirement already satisfied: rasterio>=1.0 in /usr/local/lib/python3.7/dist-packages (from rasterstats) (1.2.2)\n", - "Requirement already satisfied: shapely in /usr/local/lib/python3.7/dist-packages (from rasterstats) (1.7.1)\n", - "Requirement already satisfied: numpy>=1.9 in /usr/local/lib/python3.7/dist-packages (from rasterstats) (1.19.5)\n", - "Requirement already satisfied: affine<3.0 in /usr/local/lib/python3.7/dist-packages (from rasterstats) (2.3.0)\n", - "Requirement already satisfied: cligj>=0.4 in /usr/local/lib/python3.7/dist-packages (from rasterstats) (0.7.1)\n", - "Requirement already satisfied: simplejson in /usr/local/lib/python3.7/dist-packages (from rasterstats) (3.17.2)\n", - "Requirement already satisfied: fiona in /usr/local/lib/python3.7/dist-packages (from rasterstats) (1.8.19)\n", - "Requirement already satisfied: certifi in /usr/local/lib/python3.7/dist-packages (from rasterio>=1.0->rasterstats) (2020.12.5)\n", - "Requirement already satisfied: attrs in /usr/local/lib/python3.7/dist-packages (from rasterio>=1.0->rasterstats) (20.3.0)\n", - "Requirement already satisfied: click<8,>=4.0 in /usr/local/lib/python3.7/dist-packages (from rasterio>=1.0->rasterstats) (7.1.2)\n", - "Requirement already satisfied: click-plugins in /usr/local/lib/python3.7/dist-packages (from rasterio>=1.0->rasterstats) (1.1.1)\n", - "Requirement already satisfied: snuggs>=1.4.1 in /usr/local/lib/python3.7/dist-packages (from rasterio>=1.0->rasterstats) (1.4.7)\n", - "Requirement already satisfied: six>=1.7 in /usr/local/lib/python3.7/dist-packages (from fiona->rasterstats) (1.15.0)\n", - "Requirement already satisfied: munch in /usr/local/lib/python3.7/dist-packages (from fiona->rasterstats) (2.5.0)\n", - "Requirement already satisfied: pyparsing>=2.1.6 in /usr/local/lib/python3.7/dist-packages (from snuggs>=1.4.1->rasterio>=1.0->rasterstats) (2.4.7)\n", - "Requirement already satisfied: oasis in /usr/local/lib/python3.7/dist-packages (0.1.2)\n", - "Requirement already satisfied: sklearn in /usr/local/lib/python3.7/dist-packages (from oasis) (0.0)\n", - "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from oasis) (1.19.5)\n", - "Requirement already satisfied: tables in /usr/local/lib/python3.7/dist-packages (from oasis) (3.4.4)\n", - "Requirement already satisfied: scipy in /usr/local/lib/python3.7/dist-packages (from oasis) (1.4.1)\n", - "Requirement already satisfied: scikit-learn in /usr/local/lib/python3.7/dist-packages (from sklearn->oasis) (0.22.2.post1)\n", - "Requirement already satisfied: numexpr>=2.5.2 in /usr/local/lib/python3.7/dist-packages (from tables->oasis) (2.7.3)\n", - "Requirement already satisfied: six>=1.9.0 in /usr/local/lib/python3.7/dist-packages (from tables->oasis) (1.15.0)\n", - "Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.7/dist-packages (from scikit-learn->sklearn->oasis) (1.0.1)\n", - "Requirement already satisfied: netCDF4 in /usr/local/lib/python3.7/dist-packages (1.5.6)\n", - "Requirement already satisfied: cftime in /usr/local/lib/python3.7/dist-packages (from netCDF4) (1.4.1)\n", - "Requirement already satisfied: numpy>=1.9 in /usr/local/lib/python3.7/dist-packages (from netCDF4) (1.19.5)\n", - "Requirement already satisfied: scikit-learn in /usr/local/lib/python3.7/dist-packages (0.22.2.post1)\n", - "Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.7/dist-packages (from scikit-learn) (1.0.1)\n", - "Requirement already satisfied: numpy>=1.11.0 in /usr/local/lib/python3.7/dist-packages (from scikit-learn) (1.19.5)\n", - "Requirement already satisfied: scipy>=0.17.0 in /usr/local/lib/python3.7/dist-packages (from scikit-learn) (1.4.1)\n", - "Requirement already satisfied: scikit-image in /usr/local/lib/python3.7/dist-packages (0.16.2)\n", - "Requirement already satisfied: matplotlib!=3.0.0,>=2.0.0 in /usr/local/lib/python3.7/dist-packages (from scikit-image) (3.2.2)\n", - "Requirement already satisfied: networkx>=2.0 in /usr/local/lib/python3.7/dist-packages (from scikit-image) (2.5.1)\n", - "Requirement already satisfied: imageio>=2.3.0 in /usr/local/lib/python3.7/dist-packages (from scikit-image) (2.4.1)\n", - "Requirement already satisfied: scipy>=0.19.0 in /usr/local/lib/python3.7/dist-packages (from scikit-image) (1.4.1)\n", - "Requirement already satisfied: pillow>=4.3.0 in /usr/local/lib/python3.7/dist-packages (from scikit-image) (7.1.2)\n", - "Requirement already satisfied: PyWavelets>=0.4.0 in /usr/local/lib/python3.7/dist-packages (from scikit-image) (1.1.1)\n", - "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (1.3.1)\n", - "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.7/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (0.10.0)\n", - "Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (2.8.1)\n", - "Requirement already satisfied: numpy>=1.11 in /usr/local/lib/python3.7/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (1.19.5)\n", - "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (2.4.7)\n", - "Requirement already satisfied: decorator<5,>=4.3 in /usr/local/lib/python3.7/dist-packages (from networkx>=2.0->scikit-image) (4.4.2)\n", - "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from cycler>=0.10->matplotlib!=3.0.0,>=2.0.0->scikit-image) (1.15.0)\n", - "Requirement already satisfied: ecmwf-api-client in /usr/local/lib/python3.7/dist-packages (1.6.1)\n", - "Requirement already satisfied: joblib in /usr/local/lib/python3.7/dist-packages (1.0.1)\n", - "Collecting git+https://github.com/MAfarrag/HAPI.git\n", - " Cloning https://github.com/MAfarrag/HAPI.git to /tmp/pip-req-build-tjyqbr5z\n", - " Running command git clone -q https://github.com/MAfarrag/HAPI.git /tmp/pip-req-build-tjyqbr5z\n", - "Requirement already satisfied (use --upgrade to upgrade): HAPI-Nile==1.0.4 from git+https://github.com/MAfarrag/HAPI.git in /usr/local/lib/python3.7/dist-packages\n", - "Building wheels for collected packages: HAPI-Nile\n", - " Building wheel for HAPI-Nile (setup.py) ... \u001B[?25l\u001B[?25hdone\n", - " Created wheel for HAPI-Nile: filename=HAPI_Nile-1.0.4-cp37-none-any.whl size=16849817 sha256=f186987e4dd46c06739f3319f1577b651a487b5bdf2e1e5e9f8882522a487359\n", - " Stored in directory: /tmp/pip-ephem-wheel-cache-bav1y46k/wheels/01/64/ed/1b6002951ba52502516f59c8ec8081033e6c0ec59dff2c4424\n", - "Successfully built HAPI-Nile\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "VX1HFGcwfhEJ", - "outputId": "2fe591f8-5ff6-40e8-c119-172c9136f7b1" - }, - "source": [ - "from google.colab import drive\n", - "drive.mount('/content/drive')" - ], - "execution_count": 44, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "cY-rs6ngeaWs" - }, - "source": [ - "### Download Data\n", - "For the data of this case study you have to download this folder [Jiboa Data](https://drive.google.com/drive/folders/1uyd9mH8pHHUKK9l3bc7QXlsu4EPwy3Mr?usp=sharing) from Google Drive and set it as the working directory instead of the Path defined in the next cell" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "9UYKOoK5eaWt" - }, - "source": [ - "## Import modules" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "2qyOyPa3P4dc" - }, - "source": [ - "#libraries\n", - "import numpy as np\n", - "import datetime as dt\n", - "\n", - "# HAPI modules\n", - "from Hapi.run import Run\n", - "from Hapi.catchment import Catchment, Lake\n", - "import Hapi.rrm.hbv as HBV\n", - "import Hapi.rrm.hbv_lake as HBVLake\n", - "import Hapi.sm.performancecriteria as Pf" - ], - "execution_count": 46, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "d8GNCaxR4dGw" - }, - "source": [ - "import os\n", - "Path = \"/content/drive/My Drive/Hapi/Jiboa/El Salvador/\"\n", - "\n", - "os.chdir(Path)" - ], - "execution_count": 48, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "yA4538SsP2r4" - }, - "source": [ - "res = 4000" - ], - "execution_count": 49, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "hUTUchZneaWv" - }, - "source": [ - "# the beginning of the simulation of the calibration data\n", - "PrecPath = Path + \"inputs/Hapi/meteodata/\"+str(res)+\"/calib/\"\n", - "Evap_Path = Path + \"inputs/Hapi/meteodata/\"+str(res)+\"/calib/\"\n", - "TempPath = Path + \"inputs/Hapi/meteodata/\"+str(res)+\"/calib/\"\n", - "FlowAccPath = Path + \"inputs/Hapi/GIS/\"+str(res)+\"_matched/acc\"+str(res)+\".tif\"\n", - "FlowDPath = Path + \"inputs/Hapi/GIS/\"+str(res)+\"_matched/fd\"+str(res)+\".tif\"\n", - "ParPath = Path + \"inputs/Hapi/meteodata/\"+str(res)+\"/parameters/\"\n", - "# Lake\n", - "LakeMeteoPath = Path + \"inputs/Hapi/meteodata/lakedata.csv\"\n", - "LakeParametersPath = Path + \"inputs/Hapi/meteodata/\"+str(res)+\"/Lakeparameters.txt\"\n", - "GaugesPath = Path + \"inputs/Hapi/meteodata/Gauges/\"\n", - "SaveTo = Path + \"results/\"" - ], - "execution_count": 54, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "CZlm3E7TeaW0", - "outputId": "f64e158e-973a-4fd4-fa6c-926c02cbc2da", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 476 - } - }, - "source": [ - "AreaCoeff = 227.31\n", - "InitialCond = np.loadtxt(\"inputs/Hapi/meteodata/Initia-jiboa.txt\", usecols=0).tolist()\n", - "Snow = 0\n", - "\n", - "Sdate = '2012-06-14 19:00:00'\n", - "# Edate = '2014-11-17 00:00:00'\n", - "Edate = '2013-12-23 00:00:00'\n", - "name = \"Jiboa\"\n", - "Jiboa = Catchment(name, Sdate, Edate, SpatialResolution = \"Distributed\",\n", - " TemporalResolution = \"Hourly\", fmt='%Y-%m-%d %H:%M:%S')\n", - "Jiboa.readRainfall(PrecPath)\n", - "Jiboa.readTemperature(TempPath)\n", - "Jiboa.readET(Evap_Path)\n", - "Jiboa.readFlowAcc(FlowAccPath)\n", - "Jiboa.readFlowDir(FlowDPath)\n", - "Jiboa.readParameters(ParPath, Snow)\n", - "\n", - "Jiboa.readLumpedModel(HBV, AreaCoeff, InitialCond)" - ], - "execution_count": 55, - "outputs": [ - { - "output_type": "error", - "ename": "AssertionError", - "evalue": "ignored", - "traceback": [ - "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[0;31mValueError\u001B[0m Traceback (most recent call last)", - "\u001B[0;32m/usr/local/lib/python3.7/dist-packages/Hapi/raster.py\u001B[0m in \u001B[0;36mReadRastersFolder\u001B[0;34m(path, WithOrder)\u001B[0m\n\u001B[1;32m 2252\u001B[0m \u001B[0;32mtry\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m-> 2253\u001B[0;31m \u001B[0mfilesNo\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;34m[\u001B[0m\u001B[0mint\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mfiles\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mi\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0msplit\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m\"_\"\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;36m0\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0mi\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mrange\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mlen\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mfiles\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 2254\u001B[0m \u001B[0;32mexcept\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m/usr/local/lib/python3.7/dist-packages/Hapi/raster.py\u001B[0m in \u001B[0;36m\u001B[0;34m(.0)\u001B[0m\n\u001B[1;32m 2252\u001B[0m \u001B[0;32mtry\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m-> 2253\u001B[0;31m \u001B[0mfilesNo\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0;34m[\u001B[0m\u001B[0mint\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mfiles\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0mi\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0msplit\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0;34m\"_\"\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;36m0\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;32mfor\u001B[0m \u001B[0mi\u001B[0m \u001B[0;32min\u001B[0m \u001B[0mrange\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mlen\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mfiles\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m]\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 2254\u001B[0m \u001B[0;32mexcept\u001B[0m\u001B[0;34m:\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;31mValueError\u001B[0m: invalid literal for int() with base 10: 'evap'", - "\nDuring handling of the above exception, another exception occurred:\n", - "\u001B[0;31mAssertionError\u001B[0m Traceback (most recent call last)", - "\u001B[0;32m\u001B[0m in \u001B[0;36m\u001B[0;34m()\u001B[0m\n\u001B[1;32m 9\u001B[0m Jiboa = Catchment(name, Sdate, Edate, SpatialResolution = \"Distributed\",\n\u001B[1;32m 10\u001B[0m TemporalResolution = \"Hourly\", fmt='%Y-%m-%d %H:%M:%S')\n\u001B[0;32m---> 11\u001B[0;31m \u001B[0mJiboa\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mReadRainfall\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mPrecPath\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 12\u001B[0m \u001B[0mJiboa\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mReadTemperature\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mTempPath\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 13\u001B[0m \u001B[0mJiboa\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mReadET\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mEvap_Path\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m/usr/local/lib/python3.7/dist-packages/Hapi/catchment.py\u001B[0m in \u001B[0;36mReadRainfall\u001B[0;34m(self, Path)\u001B[0m\n\u001B[1;32m 123\u001B[0m \u001B[0;32massert\u001B[0m \u001B[0mlen\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mos\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mlistdir\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mPath\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;34m>\u001B[0m \u001B[0;36m0\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mPath\u001B[0m\u001B[0;34m+\u001B[0m\u001B[0;34m\" folder you have provided is empty\"\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 124\u001B[0m \u001B[0;31m# read data\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0;32m--> 125\u001B[0;31m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mPrec\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mRaster\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mReadRastersFolder\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mPath\u001B[0m\u001B[0;34m)\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 126\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mTS\u001B[0m \u001B[0;34m=\u001B[0m \u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mPrec\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mshape\u001B[0m\u001B[0;34m[\u001B[0m\u001B[0;36m2\u001B[0m\u001B[0;34m]\u001B[0m \u001B[0;34m+\u001B[0m \u001B[0;36m1\u001B[0m \u001B[0;31m# no of time steps =length of time series +1\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 127\u001B[0m \u001B[0;32massert\u001B[0m \u001B[0mtype\u001B[0m\u001B[0;34m(\u001B[0m\u001B[0mself\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mPrec\u001B[0m\u001B[0;34m)\u001B[0m \u001B[0;34m==\u001B[0m \u001B[0mnp\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mndarray\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0;34m\"array should be of type numpy array\"\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;32m/usr/local/lib/python3.7/dist-packages/Hapi/raster.py\u001B[0m in \u001B[0;36mReadRastersFolder\u001B[0;34m(path, WithOrder)\u001B[0m\n\u001B[1;32m 2257\u001B[0m \u001B[0mInputs\u001B[0m\u001B[0;34m.\u001B[0m\u001B[0mRenameFiles\u001B[0m \u001B[0mmethod\u001B[0m \u001B[0mto\u001B[0m \u001B[0msolve\u001B[0m \u001B[0mthis\u001B[0m \u001B[0missue\u001B[0m \u001B[0;32mand\u001B[0m \u001B[0mdon\u001B[0m\u001B[0;31m'\u001B[0m\u001B[0mt\u001B[0m \u001B[0minclude\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 2258\u001B[0m any other files in the folder with the rasters\"\"\"\n\u001B[0;32m-> 2259\u001B[0;31m \u001B[0;32massert\u001B[0m \u001B[0;32mFalse\u001B[0m\u001B[0;34m,\u001B[0m \u001B[0mErrorMsg\u001B[0m\u001B[0;34m\u001B[0m\u001B[0;34m\u001B[0m\u001B[0m\n\u001B[0m\u001B[1;32m 2260\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n\u001B[1;32m 2261\u001B[0m \u001B[0;34m\u001B[0m\u001B[0m\n", - "\u001B[0;31mAssertionError\u001B[0m: please include a number at the beginning of the\n rasters name to indicate the order of the raster please use the\n Inputs.renameFiles method to solve this issue and don't include\n any other files in the folder with the rasters" - ] - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "R8zrDjIueaW5" - }, - "source": [ - "\n", - "#p2=[24, 1530]\n", - "#init_st=[0,5,5,5,0]\n", - "init_st = np.loadtxt(\"inputs/Hapi/meteodata/Initia-jiboa.txt\", usecols=0).tolist()\n", - "snow = 0\n", - "\n", - "\n", - "# lake meteorological data\n", - "ind = pd.date_range(start, end, freq = \"H\" )\n", - "lakedata = pd.read_csv(\"inputs/Hapi/meteodata/lakedata.csv\", index_col = 0)\n", - "lakedata.index = ind\n", - "lakeCalib = lakedata.loc[start:calib_end]\n", - "lakeValid = lakedata.loc[calib_end:end]\n", - "# convert the dataframe into array\n", - "lakeCalibArray = lakeCalib.values\n", - "# take only the plake, et, t and tm columns and exclude the last column\n", - "lakeCalibArray = lakeCalibArray[:,0:-1]\n", - "\n", - "# where the lake discharges its flow (give the indices of the cell)\n", - "lakecell = [2,1] # 4km\n", - "#lakecell = [4,2] # 2km\n", - "#lakecell = [10,4] # 1km\n", - "#lakecell = [19,10] # 500m\n", - "\n", - "LakeParameters = np.loadtxt(\"inputs/Hapi/meteodata/4000/Lakeparameters.txt\").tolist()\n", - "StageDischargeCurve = np.loadtxt(\"inputs/Hapi/meteodata/curve.txt\")\n", - "p2 = [1, 227.31, 133.98, 70.64]\n", - "Lake_init_st = np.loadtxt(\"inputs/Hapi/meteodata/Initia-lake.txt\", usecols=0).tolist()" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "I5OdyI_KeaW9" - }, - "source": [ - "# Run the model" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "id": "Brso_XrwiVvV", - "outputId": "fc7852a1-7640-496a-98a5-86d9d6503ef3" - }, - "source": [ - "os.getcwd()" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "'/content/drive/My Drive'" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 12 - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - }, - "id": "mYZRWMT0idd8", - "outputId": "c0bb0eaa-99a0-4ce3-e122-cfff72b8df01" - }, - "source": [ - "os.listdir()" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "['Hapi', 'Jiboa.mxd', 'web application', 'processing', 'inputs', 'results.zip']" - ] - }, - "metadata": { - "tags": [] - }, - "execution_count": 13 - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "5xivVaDweaW-" - }, - "source": [ - "Sim =pd.DataFrame(index = lakeCalib.index)\n", - "st, Sim['Q'], q_uz_routed, q_lz_trans = runHAPIwithLake(HBV, Paths, ParPath, p2, init_st,\n", - " snow, lakeCalibArray, StageDischargeCurve,\n", - " LakeParameters, lakecell,Lake_init_st)" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "kK8Ip1ZkeaXC" - }, - "source": [ - "### Evaluate model performance" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "60mTcaPveaXD" - }, - "source": [ - "WS = {}\n", - "WS['type'] = 1\n", - "WS['N'] = 3\n", - "ModelMetrics=dict()\n", - "ModelMetrics['CalibErrorHf']=Pf.RMSEHF(lakeCalib['Q'],Sim['Q'],WS['type'],WS['N'],0.75)\n", - "ModelMetrics['CalibErrorLf']=Pf.RMSELF(lakeCalib['Q'],Sim['Q'],WS['type'],WS['N'],0.75)\n", - "ModelMetrics['CalibNSEHf']=Pf.NSE(lakeCalib['Q'],Sim['Q'])\n", - "ModelMetrics['CalibNSELf']=Pf.NSE(np.log(lakeCalib['Q']),np.log(Sim['Q']))\n", - "ModelMetrics['CalibRMSE']=Pf.RMSE(lakeCalib['Q'],Sim['Q'])\n", - "ModelMetrics['CalibKGE']=Pf.KGE(lakeCalib['Q'],Sim['Q'])\n", - "ModelMetrics['CalibWB']=Pf.WB(lakeCalib['Q'],Sim['Q'])\n", - "print(\"RMSE(HF) = \" + str(round(ModelMetrics['CalibErrorHf'],2)))\n", - "print(\"RMSE(LF) = \" + str(round(ModelMetrics['CalibErrorLf'],2)))\n", - "print(\"RMSE = \" + str(round(ModelMetrics['CalibRMSE'],2)))\n", - "print(\"NSE(HF) = \" + str(round(ModelMetrics['CalibNSEHf'],2)))\n", - "print(\"NSE(LF) = \" + str(round(ModelMetrics['CalibNSELf'],2)))\n", - "print(\"KGE = \" + str(round(ModelMetrics['CalibKGE'],2)))\n", - "print(\"WB = \" + str(round(ModelMetrics['CalibWB'],2)))" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "fvcFNEc5eaXG" - }, - "source": [ - "plt.figure(50,figsize=(15,8))\n", - "Sim.Q.plot(color=[(0,0.3,0.7)],linewidth=2.5,label=\"Simulated data\", zorder = 10)\n", - "ax1=lakeCalib['Q'].plot(color='#DC143C',linewidth=2.8,label='Observed data')\n", - "ax1.annotate(\"Model performance\" ,xy=('2012-12-01 00:00:00',20),fontsize=15)\n", - "ax1.annotate(\"RMSE = \" + str(round(ModelMetrics['CalibRMSE'],3)),xy=('2012-12-01 00:00:00',20-1.5),fontsize=15)\n", - "ax1.annotate(\"NSE = \" + str(round(ModelMetrics['CalibNSEHf'],2)),xy=('2012-12-01 00:00:00',20-3),fontsize=15)\n", - "plt.legend()" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "nTZ63xgeeaXL" - }, - "source": [ - "# Store the result into rasters" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Z_xSCCvJeaXL" - }, - "source": [ - "# create list of names\n", - "src=gdal.Open(FlowAccPath)\n", - "\n", - "index=pd.date_range(start,calib_end,freq=\"1H\")\n", - "\n", - "resultspath=\"results/upper_zone_discharge/4000/\"\n", - "names=[resultspath+str(i)[:-6] for i in index]\n", - "names=[i.replace(\"-\",\"_\") for i in names]\n", - "names=[i.replace(\" \",\"_\") for i in names]\n", - "names=[i+\".tif\" for i in names]\n", - "\n", - "\n", - "Raster.RastersLike(src,q_uz_routed[:,:,:-1],names)\n" - ], - "execution_count": null, - "outputs": [] - } - ] + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "M3wlmF0_eaWn" + }, + "source": [ + "# Jiboa Case Study" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "zf0ye029eaWq" + }, + "source": [ + "This code is prepared to Run the distributed model for jiboa rover in El Salvador\n", + "wher the catchment is consisted os a ustream lake and a volcanic area\n", + "- you have to make the root directory to the examples folder to enable the code\n", + " from reading input files" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "lppgfy9UBhAk", + "outputId": "fda23dfc-c1c1-4afd-84ef-1ce7c6085da4" + }, + "source": [ + "! pip install gdal\n", + "! pip install affine\n", + "! pip install fiona\n", + "! pip install proj\n", + "! pip install pyproj\n", + "! pip install pandas\n", + "! pip install geopandas\n", + "! pip install matplotlib-base\n", + "! pip install python\n", + "! pip install scipy\n", + "! pip install shapely\n", + "! pip install statsmodels\n", + "! pip install rasterio\n", + "! pip install rasterstats\n", + "! pip install oasis\n", + "! pip install netCDF4\n", + "! pip install scikit-learn\n", + "! pip install scikit-image\n", + "! pip install ecmwf-api-client\n", + "! pip install joblib\n", + "!pip install git+https://github.com/MAfarrag/HAPI.git" + ], + "execution_count": 43, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Requirement already satisfied: gdal in /usr/local/lib/python3.7/dist-packages (2.2.2)\n", + "Requirement already satisfied: affine in /usr/local/lib/python3.7/dist-packages (2.3.0)\n", + "Requirement already satisfied: fiona in /usr/local/lib/python3.7/dist-packages (1.8.19)\n", + "Requirement already satisfied: six>=1.7 in /usr/local/lib/python3.7/dist-packages (from fiona) (1.15.0)\n", + "Requirement already satisfied: click-plugins>=1.0 in /usr/local/lib/python3.7/dist-packages (from fiona) (1.1.1)\n", + "Requirement already satisfied: click<8,>=4.0 in /usr/local/lib/python3.7/dist-packages (from fiona) (7.1.2)\n", + "Requirement already satisfied: cligj>=0.5 in /usr/local/lib/python3.7/dist-packages (from fiona) (0.7.1)\n", + "Requirement already satisfied: attrs>=17 in /usr/local/lib/python3.7/dist-packages (from fiona) (20.3.0)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.7/dist-packages (from fiona) (2020.12.5)\n", + "Requirement already satisfied: munch in /usr/local/lib/python3.7/dist-packages (from fiona) (2.5.0)\n", + "Requirement already satisfied: proj in /usr/local/lib/python3.7/dist-packages (0.2.0)\n", + "Requirement already satisfied: arrow>=0.15.6 in /usr/local/lib/python3.7/dist-packages (from proj) (1.0.3)\n", + "Requirement already satisfied: click>=7.1.2 in /usr/local/lib/python3.7/dist-packages (from proj) (7.1.2)\n", + "Requirement already satisfied: python-dateutil>=2.7.0 in /usr/local/lib/python3.7/dist-packages (from arrow>=0.15.6->proj) (2.8.1)\n", + "Requirement already satisfied: typing-extensions; python_version < \"3.8\" in /usr/local/lib/python3.7/dist-packages (from arrow>=0.15.6->proj) (3.7.4.3)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.7.0->arrow>=0.15.6->proj) (1.15.0)\n", + "Requirement already satisfied: pyproj in /usr/local/lib/python3.7/dist-packages (3.0.1)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.7/dist-packages (from pyproj) (2020.12.5)\n", + "Requirement already satisfied: pandas in /usr/local/lib/python3.7/dist-packages (1.1.5)\n", + "Requirement already satisfied: numpy>=1.15.4 in /usr/local/lib/python3.7/dist-packages (from pandas) (1.19.5)\n", + "Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.7/dist-packages (from pandas) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas) (2.8.1)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.7.3->pandas) (1.15.0)\n", + "Requirement already satisfied: geopandas in /usr/local/lib/python3.7/dist-packages (0.9.0)\n", + "Requirement already satisfied: pyproj>=2.2.0 in /usr/local/lib/python3.7/dist-packages (from geopandas) (3.0.1)\n", + "Requirement already satisfied: pandas>=0.24.0 in /usr/local/lib/python3.7/dist-packages (from geopandas) (1.1.5)\n", + "Requirement already satisfied: fiona>=1.8 in /usr/local/lib/python3.7/dist-packages (from geopandas) (1.8.19)\n", + "Requirement already satisfied: shapely>=1.6 in /usr/local/lib/python3.7/dist-packages (from geopandas) (1.7.1)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.7/dist-packages (from pyproj>=2.2.0->geopandas) (2020.12.5)\n", + "Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.7/dist-packages (from pandas>=0.24.0->geopandas) (2018.9)\n", + "Requirement already satisfied: numpy>=1.15.4 in /usr/local/lib/python3.7/dist-packages (from pandas>=0.24.0->geopandas) (1.19.5)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas>=0.24.0->geopandas) (2.8.1)\n", + "Requirement already satisfied: click-plugins>=1.0 in /usr/local/lib/python3.7/dist-packages (from fiona>=1.8->geopandas) (1.1.1)\n", + "Requirement already satisfied: cligj>=0.5 in /usr/local/lib/python3.7/dist-packages (from fiona>=1.8->geopandas) (0.7.1)\n", + "Requirement already satisfied: six>=1.7 in /usr/local/lib/python3.7/dist-packages (from fiona>=1.8->geopandas) (1.15.0)\n", + "Requirement already satisfied: click<8,>=4.0 in /usr/local/lib/python3.7/dist-packages (from fiona>=1.8->geopandas) (7.1.2)\n", + "Requirement already satisfied: munch in /usr/local/lib/python3.7/dist-packages (from fiona>=1.8->geopandas) (2.5.0)\n", + "Requirement already satisfied: attrs>=17 in /usr/local/lib/python3.7/dist-packages (from fiona>=1.8->geopandas) (20.3.0)\n", + "\u001b[31mERROR: Could not find a version that satisfies the requirement matplotlib-base (from versions: none)\u001b[0m\n", + "\u001b[31mERROR: No matching distribution found for matplotlib-base\u001b[0m\n", + "\u001b[31mERROR: Could not find a version that satisfies the requirement python (from versions: none)\u001b[0m\n", + "\u001b[31mERROR: No matching distribution found for python\u001b[0m\n", + "Requirement already satisfied: scipy in /usr/local/lib/python3.7/dist-packages (1.4.1)\n", + "Requirement already satisfied: numpy>=1.13.3 in /usr/local/lib/python3.7/dist-packages (from scipy) (1.19.5)\n", + "Requirement already satisfied: shapely in /usr/local/lib/python3.7/dist-packages (1.7.1)\n", + "Requirement already satisfied: statsmodels in /usr/local/lib/python3.7/dist-packages (0.10.2)\n", + "Requirement already satisfied: scipy>=0.18 in /usr/local/lib/python3.7/dist-packages (from statsmodels) (1.4.1)\n", + "Requirement already satisfied: numpy>=1.11 in /usr/local/lib/python3.7/dist-packages (from statsmodels) (1.19.5)\n", + "Requirement already satisfied: pandas>=0.19 in /usr/local/lib/python3.7/dist-packages (from statsmodels) (1.1.5)\n", + "Requirement already satisfied: patsy>=0.4.0 in /usr/local/lib/python3.7/dist-packages (from statsmodels) (0.5.1)\n", + "Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.7/dist-packages (from pandas>=0.19->statsmodels) (2018.9)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.7/dist-packages (from pandas>=0.19->statsmodels) (2.8.1)\n", + "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from patsy>=0.4.0->statsmodels) (1.15.0)\n", + "Requirement already satisfied: rasterio in /usr/local/lib/python3.7/dist-packages (1.2.2)\n", + "Requirement already satisfied: cligj>=0.5 in /usr/local/lib/python3.7/dist-packages (from rasterio) (0.7.1)\n", + "Requirement already satisfied: click<8,>=4.0 in /usr/local/lib/python3.7/dist-packages (from rasterio) (7.1.2)\n", + "Requirement already satisfied: snuggs>=1.4.1 in /usr/local/lib/python3.7/dist-packages (from rasterio) (1.4.7)\n", + "Requirement already satisfied: attrs in /usr/local/lib/python3.7/dist-packages (from rasterio) (20.3.0)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.7/dist-packages (from rasterio) (2020.12.5)\n", + "Requirement already satisfied: affine in /usr/local/lib/python3.7/dist-packages (from rasterio) (2.3.0)\n", + "Requirement already satisfied: click-plugins in /usr/local/lib/python3.7/dist-packages (from rasterio) (1.1.1)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from rasterio) (1.19.5)\n", + "Requirement already satisfied: pyparsing>=2.1.6 in /usr/local/lib/python3.7/dist-packages (from snuggs>=1.4.1->rasterio) (2.4.7)\n", + "Requirement already satisfied: rasterstats in /usr/local/lib/python3.7/dist-packages (0.15.0)\n", + "Requirement already satisfied: rasterio>=1.0 in /usr/local/lib/python3.7/dist-packages (from rasterstats) (1.2.2)\n", + "Requirement already satisfied: shapely in /usr/local/lib/python3.7/dist-packages (from rasterstats) (1.7.1)\n", + "Requirement already satisfied: numpy>=1.9 in /usr/local/lib/python3.7/dist-packages (from rasterstats) (1.19.5)\n", + "Requirement already satisfied: affine<3.0 in /usr/local/lib/python3.7/dist-packages (from rasterstats) (2.3.0)\n", + "Requirement already satisfied: cligj>=0.4 in /usr/local/lib/python3.7/dist-packages (from rasterstats) (0.7.1)\n", + "Requirement already satisfied: simplejson in /usr/local/lib/python3.7/dist-packages (from rasterstats) (3.17.2)\n", + "Requirement already satisfied: fiona in /usr/local/lib/python3.7/dist-packages (from rasterstats) (1.8.19)\n", + "Requirement already satisfied: certifi in /usr/local/lib/python3.7/dist-packages (from rasterio>=1.0->rasterstats) (2020.12.5)\n", + "Requirement already satisfied: attrs in /usr/local/lib/python3.7/dist-packages (from rasterio>=1.0->rasterstats) (20.3.0)\n", + "Requirement already satisfied: click<8,>=4.0 in /usr/local/lib/python3.7/dist-packages (from rasterio>=1.0->rasterstats) (7.1.2)\n", + "Requirement already satisfied: click-plugins in /usr/local/lib/python3.7/dist-packages (from rasterio>=1.0->rasterstats) (1.1.1)\n", + "Requirement already satisfied: snuggs>=1.4.1 in /usr/local/lib/python3.7/dist-packages (from rasterio>=1.0->rasterstats) (1.4.7)\n", + "Requirement already satisfied: six>=1.7 in /usr/local/lib/python3.7/dist-packages (from fiona->rasterstats) (1.15.0)\n", + "Requirement already satisfied: munch in /usr/local/lib/python3.7/dist-packages (from fiona->rasterstats) (2.5.0)\n", + "Requirement already satisfied: pyparsing>=2.1.6 in /usr/local/lib/python3.7/dist-packages (from snuggs>=1.4.1->rasterio>=1.0->rasterstats) (2.4.7)\n", + "Requirement already satisfied: oasis in /usr/local/lib/python3.7/dist-packages (0.1.2)\n", + "Requirement already satisfied: sklearn in /usr/local/lib/python3.7/dist-packages (from oasis) (0.0)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from oasis) (1.19.5)\n", + "Requirement already satisfied: tables in /usr/local/lib/python3.7/dist-packages (from oasis) (3.4.4)\n", + "Requirement already satisfied: scipy in /usr/local/lib/python3.7/dist-packages (from oasis) (1.4.1)\n", + "Requirement already satisfied: scikit-learn in /usr/local/lib/python3.7/dist-packages (from sklearn->oasis) (0.22.2.post1)\n", + "Requirement already satisfied: numexpr>=2.5.2 in /usr/local/lib/python3.7/dist-packages (from tables->oasis) (2.7.3)\n", + "Requirement already satisfied: six>=1.9.0 in /usr/local/lib/python3.7/dist-packages (from tables->oasis) (1.15.0)\n", + "Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.7/dist-packages (from scikit-learn->sklearn->oasis) (1.0.1)\n", + "Requirement already satisfied: netCDF4 in /usr/local/lib/python3.7/dist-packages (1.5.6)\n", + "Requirement already satisfied: cftime in /usr/local/lib/python3.7/dist-packages (from netCDF4) (1.4.1)\n", + "Requirement already satisfied: numpy>=1.9 in /usr/local/lib/python3.7/dist-packages (from netCDF4) (1.19.5)\n", + "Requirement already satisfied: scikit-learn in /usr/local/lib/python3.7/dist-packages (0.22.2.post1)\n", + "Requirement already satisfied: joblib>=0.11 in /usr/local/lib/python3.7/dist-packages (from scikit-learn) (1.0.1)\n", + "Requirement already satisfied: numpy>=1.11.0 in /usr/local/lib/python3.7/dist-packages (from scikit-learn) (1.19.5)\n", + "Requirement already satisfied: scipy>=0.17.0 in /usr/local/lib/python3.7/dist-packages (from scikit-learn) (1.4.1)\n", + "Requirement already satisfied: scikit-image in /usr/local/lib/python3.7/dist-packages (0.16.2)\n", + "Requirement already satisfied: matplotlib!=3.0.0,>=2.0.0 in /usr/local/lib/python3.7/dist-packages (from scikit-image) (3.2.2)\n", + "Requirement already satisfied: networkx>=2.0 in /usr/local/lib/python3.7/dist-packages (from scikit-image) (2.5.1)\n", + "Requirement already satisfied: imageio>=2.3.0 in /usr/local/lib/python3.7/dist-packages (from scikit-image) (2.4.1)\n", + "Requirement already satisfied: scipy>=0.19.0 in /usr/local/lib/python3.7/dist-packages (from scikit-image) (1.4.1)\n", + "Requirement already satisfied: pillow>=4.3.0 in /usr/local/lib/python3.7/dist-packages (from scikit-image) (7.1.2)\n", + "Requirement already satisfied: PyWavelets>=0.4.0 in /usr/local/lib/python3.7/dist-packages (from scikit-image) (1.1.1)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (1.3.1)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.7/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (0.10.0)\n", + "Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (2.8.1)\n", + "Requirement already satisfied: numpy>=1.11 in /usr/local/lib/python3.7/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (1.19.5)\n", + "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib!=3.0.0,>=2.0.0->scikit-image) (2.4.7)\n", + "Requirement already satisfied: decorator<5,>=4.3 in /usr/local/lib/python3.7/dist-packages (from networkx>=2.0->scikit-image) (4.4.2)\n", + "Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from cycler>=0.10->matplotlib!=3.0.0,>=2.0.0->scikit-image) (1.15.0)\n", + "Requirement already satisfied: ecmwf-api-client in /usr/local/lib/python3.7/dist-packages (1.6.1)\n", + "Requirement already satisfied: joblib in /usr/local/lib/python3.7/dist-packages (1.0.1)\n", + "Collecting git+https://github.com/MAfarrag/HAPI.git\n", + " Cloning https://github.com/MAfarrag/HAPI.git to /tmp/pip-req-build-tjyqbr5z\n", + " Running command git clone -q https://github.com/MAfarrag/HAPI.git /tmp/pip-req-build-tjyqbr5z\n", + "Requirement already satisfied (use --upgrade to upgrade): HAPI-Nile==1.0.4 from git+https://github.com/MAfarrag/HAPI.git in /usr/local/lib/python3.7/dist-packages\n", + "Building wheels for collected packages: HAPI-Nile\n", + " Building wheel for HAPI-Nile (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for HAPI-Nile: filename=HAPI_Nile-1.0.4-cp37-none-any.whl size=16849817 sha256=f186987e4dd46c06739f3319f1577b651a487b5bdf2e1e5e9f8882522a487359\n", + " Stored in directory: /tmp/pip-ephem-wheel-cache-bav1y46k/wheels/01/64/ed/1b6002951ba52502516f59c8ec8081033e6c0ec59dff2c4424\n", + "Successfully built HAPI-Nile\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "VX1HFGcwfhEJ", + "outputId": "2fe591f8-5ff6-40e8-c119-172c9136f7b1" + }, + "source": [ + "from google.colab import drive\n", + "drive.mount('/content/drive')" + ], + "execution_count": 44, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cY-rs6ngeaWs" + }, + "source": [ + "### Download Data\n", + "For the data of this case study you have to download this folder [Jiboa Data](https://drive.google.com/drive/folders/1uyd9mH8pHHUKK9l3bc7QXlsu4EPwy3Mr?usp=sharing) from Google Drive and set it as the working directory instead of the Path defined in the next cell" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "9UYKOoK5eaWt" + }, + "source": [ + "## Import modules" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "2qyOyPa3P4dc" + }, + "source": [ + "#libraries\n", + "import numpy as np\n", + "import datetime as dt\n", + "\n", + "# HAPI modules\n", + "from Hapi.run import Run\n", + "from Hapi.catchment import Catchment, Lake\n", + "import Hapi.rrm.hbv as HBV\n", + "import Hapi.rrm.hbv_lake as HBVLake\n", + "import Hapi.sm.performancecriteria as Pf" + ], + "execution_count": 46, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "d8GNCaxR4dGw" + }, + "source": [ + "import os\n", + "Path = \"/content/drive/My Drive/Hapi/Jiboa/El Salvador/\"\n", + "\n", + "os.chdir(Path)" + ], + "execution_count": 48, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "yA4538SsP2r4" + }, + "source": [ + "res = 4000" + ], + "execution_count": 49, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "hUTUchZneaWv" + }, + "source": [ + "# the beginning of the simulation of the calibration data\n", + "PrecPath = Path + \"inputs/Hapi/meteodata/\"+str(res)+\"/calib/\"\n", + "Evap_Path = Path + \"inputs/Hapi/meteodata/\"+str(res)+\"/calib/\"\n", + "TempPath = Path + \"inputs/Hapi/meteodata/\"+str(res)+\"/calib/\"\n", + "FlowAccPath = Path + \"inputs/Hapi/GIS/\"+str(res)+\"_matched/acc\"+str(res)+\".tif\"\n", + "FlowDPath = Path + \"inputs/Hapi/GIS/\"+str(res)+\"_matched/fd\"+str(res)+\".tif\"\n", + "ParPath = Path + \"inputs/Hapi/meteodata/\"+str(res)+\"/parameters/\"\n", + "# Lake\n", + "LakeMeteoPath = Path + \"inputs/Hapi/meteodata/lakedata.csv\"\n", + "LakeParametersPath = Path + \"inputs/Hapi/meteodata/\"+str(res)+\"/Lakeparameters.txt\"\n", + "GaugesPath = Path + \"inputs/Hapi/meteodata/Gauges/\"\n", + "SaveTo = Path + \"results/\"" + ], + "execution_count": 54, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "CZlm3E7TeaW0", + "outputId": "f64e158e-973a-4fd4-fa6c-926c02cbc2da", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 476 + } + }, + "source": [ + "AreaCoeff = 227.31\n", + "InitialCond = np.loadtxt(\"inputs/Hapi/meteodata/Initia-jiboa.txt\", usecols=0).tolist()\n", + "Snow = 0\n", + "\n", + "Sdate = '2012-06-14 19:00:00'\n", + "# Edate = '2014-11-17 00:00:00'\n", + "Edate = '2013-12-23 00:00:00'\n", + "name = \"Jiboa\"\n", + "Jiboa = Catchment(name, Sdate, Edate, SpatialResolution = \"Distributed\",\n", + " TemporalResolution = \"Hourly\", fmt='%Y-%m-%d %H:%M:%S')\n", + "Jiboa.readRainfall(PrecPath)\n", + "Jiboa.readTemperature(TempPath)\n", + "Jiboa.readET(Evap_Path)\n", + "Jiboa.readFlowAcc(FlowAccPath)\n", + "Jiboa.readFlowDir(FlowDPath)\n", + "Jiboa.readParameters(ParPath, Snow)\n", + "\n", + "Jiboa.readLumpedModel(HBV, AreaCoeff, InitialCond)" + ], + "execution_count": 55, + "outputs": [ + { + "output_type": "error", + "ename": "AssertionError", + "evalue": "ignored", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/Hapi/raster.py\u001b[0m in \u001b[0;36mReadRastersFolder\u001b[0;34m(path, WithOrder)\u001b[0m\n\u001b[1;32m 2252\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2253\u001b[0;31m \u001b[0mfilesNo\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfiles\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"_\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfiles\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2254\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/Hapi/raster.py\u001b[0m in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 2252\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2253\u001b[0;31m \u001b[0mfilesNo\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfiles\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"_\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfiles\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2254\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mValueError\u001b[0m: invalid literal for int() with base 10: 'evap'", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 9\u001b[0m Jiboa = Catchment(name, Sdate, Edate, SpatialResolution = \"Distributed\",\n\u001b[1;32m 10\u001b[0m TemporalResolution = \"Hourly\", fmt='%Y-%m-%d %H:%M:%S')\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0mJiboa\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReadRainfall\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mPrecPath\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0mJiboa\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReadTemperature\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mTempPath\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0mJiboa\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReadET\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mEvap_Path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/Hapi/catchment.py\u001b[0m in \u001b[0;36mReadRainfall\u001b[0;34m(self, Path)\u001b[0m\n\u001b[1;32m 123\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlistdir\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mPath\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mPath\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m\" folder you have provided is empty\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 124\u001b[0m \u001b[0;31m# read data\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 125\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPrec\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mRaster\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mReadRastersFolder\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mPath\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 126\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTS\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPrec\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m \u001b[0;31m# no of time steps =length of time series +1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 127\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mPrec\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mndarray\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"array should be of type numpy array\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/Hapi/raster.py\u001b[0m in \u001b[0;36mReadRastersFolder\u001b[0;34m(path, WithOrder)\u001b[0m\n\u001b[1;32m 2257\u001b[0m \u001b[0mInputs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mRenameFiles\u001b[0m \u001b[0mmethod\u001b[0m \u001b[0mto\u001b[0m \u001b[0msolve\u001b[0m \u001b[0mthis\u001b[0m \u001b[0missue\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mdon\u001b[0m\u001b[0;31m'\u001b[0m\u001b[0mt\u001b[0m \u001b[0minclude\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2258\u001b[0m any other files in the folder with the rasters\"\"\"\n\u001b[0;32m-> 2259\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mErrorMsg\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2260\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2261\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAssertionError\u001b[0m: please include a number at the beginning of the\n rasters name to indicate the order of the raster please use the\n Inputs.renameFiles method to solve this issue and don't include\n any other files in the folder with the rasters" + ] + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "R8zrDjIueaW5" + }, + "source": [ + "\n", + "#p2=[24, 1530]\n", + "#init_st=[0,5,5,5,0]\n", + "init_st = np.loadtxt(\"inputs/Hapi/meteodata/Initia-jiboa.txt\", usecols=0).tolist()\n", + "snow = 0\n", + "\n", + "\n", + "# lake meteorological data\n", + "ind = pd.date_range(start, end, freq = \"H\" )\n", + "lakedata = pd.read_csv(\"inputs/Hapi/meteodata/lakedata.csv\", index_col = 0)\n", + "lakedata.index = ind\n", + "lakeCalib = lakedata.loc[start:calib_end]\n", + "lakeValid = lakedata.loc[calib_end:end]\n", + "# convert the dataframe into array\n", + "lakeCalibArray = lakeCalib.values\n", + "# take only the plake, et, t and tm columns and exclude the last column\n", + "lakeCalibArray = lakeCalibArray[:,0:-1]\n", + "\n", + "# where the lake discharges its flow (give the indices of the cell)\n", + "lakecell = [2,1] # 4km\n", + "#lakecell = [4,2] # 2km\n", + "#lakecell = [10,4] # 1km\n", + "#lakecell = [19,10] # 500m\n", + "\n", + "LakeParameters = np.loadtxt(\"inputs/Hapi/meteodata/4000/Lakeparameters.txt\").tolist()\n", + "StageDischargeCurve = np.loadtxt(\"inputs/Hapi/meteodata/curve.txt\")\n", + "p2 = [1, 227.31, 133.98, 70.64]\n", + "Lake_init_st = np.loadtxt(\"inputs/Hapi/meteodata/Initia-lake.txt\", usecols=0).tolist()" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "I5OdyI_KeaW9" + }, + "source": [ + "# Run the model" + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "id": "Brso_XrwiVvV", + "outputId": "fc7852a1-7640-496a-98a5-86d9d6503ef3" + }, + "source": [ + "os.getcwd()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'/content/drive/My Drive'" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 12 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "id": "mYZRWMT0idd8", + "outputId": "c0bb0eaa-99a0-4ce3-e122-cfff72b8df01" + }, + "source": [ + "os.listdir()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "['Hapi', 'Jiboa.mxd', 'web application', 'processing', 'inputs', 'results.zip']" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 13 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "5xivVaDweaW-" + }, + "source": [ + "Sim =pd.DataFrame(index = lakeCalib.index)\n", + "st, Sim['Q'], q_uz_routed, q_lz_trans = runHAPIwithLake(HBV, Paths, ParPath, p2, init_st,\n", + " snow, lakeCalibArray, StageDischargeCurve,\n", + " LakeParameters, lakecell,Lake_init_st)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "kK8Ip1ZkeaXC" + }, + "source": [ + "### Evaluate model performance" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "60mTcaPveaXD" + }, + "source": [ + "WS = {}\n", + "WS['type'] = 1\n", + "WS['N'] = 3\n", + "ModelMetrics=dict()\n", + "ModelMetrics['CalibErrorHf']=Pf.RMSEHF(lakeCalib['Q'],Sim['Q'],WS['type'],WS['N'],0.75)\n", + "ModelMetrics['CalibErrorLf']=Pf.RMSELF(lakeCalib['Q'],Sim['Q'],WS['type'],WS['N'],0.75)\n", + "ModelMetrics['CalibNSEHf']=Pf.NSE(lakeCalib['Q'],Sim['Q'])\n", + "ModelMetrics['CalibNSELf']=Pf.NSE(np.log(lakeCalib['Q']),np.log(Sim['Q']))\n", + "ModelMetrics['CalibRMSE']=Pf.RMSE(lakeCalib['Q'],Sim['Q'])\n", + "ModelMetrics['CalibKGE']=Pf.KGE(lakeCalib['Q'],Sim['Q'])\n", + "ModelMetrics['CalibWB']=Pf.WB(lakeCalib['Q'],Sim['Q'])\n", + "print(\"RMSE(HF) = \" + str(round(ModelMetrics['CalibErrorHf'],2)))\n", + "print(\"RMSE(LF) = \" + str(round(ModelMetrics['CalibErrorLf'],2)))\n", + "print(\"RMSE = \" + str(round(ModelMetrics['CalibRMSE'],2)))\n", + "print(\"NSE(HF) = \" + str(round(ModelMetrics['CalibNSEHf'],2)))\n", + "print(\"NSE(LF) = \" + str(round(ModelMetrics['CalibNSELf'],2)))\n", + "print(\"KGE = \" + str(round(ModelMetrics['CalibKGE'],2)))\n", + "print(\"WB = \" + str(round(ModelMetrics['CalibWB'],2)))" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "fvcFNEc5eaXG" + }, + "source": [ + "plt.figure(50,figsize=(15,8))\n", + "Sim.Q.plot(color=[(0,0.3,0.7)],linewidth=2.5,label=\"Simulated data\", zorder = 10)\n", + "ax1=lakeCalib['Q'].plot(color='#DC143C',linewidth=2.8,label='Observed data')\n", + "ax1.annotate(\"Model performance\" ,xy=('2012-12-01 00:00:00',20),fontsize=15)\n", + "ax1.annotate(\"RMSE = \" + str(round(ModelMetrics['CalibRMSE'],3)),xy=('2012-12-01 00:00:00',20-1.5),fontsize=15)\n", + "ax1.annotate(\"NSE = \" + str(round(ModelMetrics['CalibNSEHf'],2)),xy=('2012-12-01 00:00:00',20-3),fontsize=15)\n", + "plt.legend()" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nTZ63xgeeaXL" + }, + "source": [ + "# Store the result into rasters" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Z_xSCCvJeaXL" + }, + "source": [ + "# create list of names\n", + "src=gdal.Open(FlowAccPath)\n", + "\n", + "index=pd.date_range(start,calib_end,freq=\"1H\")\n", + "\n", + "resultspath=\"results/upper_zone_discharge/4000/\"\n", + "names=[resultspath+str(i)[:-6] for i in index]\n", + "names=[i.replace(\"-\",\"_\") for i in names]\n", + "names=[i.replace(\" \",\"_\") for i in names]\n", + "names=[i+\".tif\" for i in names]\n", + "\n", + "\n", + "Raster.RastersLike(src,q_uz_routed[:,:,:-1],names)\n" + ], + "execution_count": null, + "outputs": [] + } + ] } diff --git a/examples/hydrological-model/Note books/coello-distributed-model-run-muskingum.ipynb b/examples/hydrological-model/Note books/coello-distributed-model-run-muskingum.ipynb index 61e3b0e2a..a9fc432cc 100644 --- a/examples/hydrological-model/Note books/coello-distributed-model-run-muskingum.ipynb +++ b/examples/hydrological-model/Note books/coello-distributed-model-run-muskingum.ipynb @@ -1,2228 +1,2228 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "9faa83b4-6c5d-4f4e-8962-0559459303de", - "metadata": {}, - "source": [ - "# Hapi" - ] - }, - { - "cell_type": "markdown", - "id": "bfb8c8c0-1fc4-4710-923e-72f99f944349", - "metadata": {}, - "source": [ - "## Conceptual Distributed Hydrological Model" - ] - }, - { - "cell_type": "markdown", - "id": "4297fcd6-b914-4d24-a5f9-5088d3898c43", - "metadata": {}, - "source": [ - "- Please change the Path in the following cell to the directory where you stored the case study data" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "fb95e3bb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": "'C:\\\\MyComputer\\\\01Algorithms\\\\Hydrology\\\\Hapi'" - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Comp = \"F:/01Algorithms/Hydrology/HAPI\"\n", - "import os\n", - "\n", - "\n", - "os.chdir(\"../../../\")\n", - "os.getcwd()" - ] - }, - { - "cell_type": "markdown", - "id": "289fceae", - "metadata": {}, - "source": [ - "### Import Modules" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "bf034b9d", - "metadata": {}, - "outputs": [], - "source": [ - "import datetime as dt\n", - "from Hapi.run import Run\n", - "from Hapi.catchment import Catchment\n", - "import Hapi.rrm.hbv_bergestrom92 as HBV" - ] - }, - { - "cell_type": "markdown", - "id": "b73beb97", - "metadata": {}, - "source": [ - "### Paths" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "0b8da008", - "metadata": {}, - "outputs": [], - "source": [ - "Path = \"Examples/Hydrological model/data/distributed_model\"\n", - "PrecPath = Path + \"/prec\"\n", - "Evap_Path = Path + \"/evap\"\n", - "TempPath = Path + \"/temp\"\n", - "FlowAccPath = Path + \"/GIS/acc4000.tif\"\n", - "FlowDPath = Path + \"/GIS/fd4000.tif\"\n", - "\n", - "ParPathRun = Path + \"/Parameter set-Avg/\"" - ] - }, - { - "cell_type": "markdown", - "id": "76644d28", - "metadata": {}, - "source": [ - "### Meteorological data" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "1c5debc4", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-19 23:55:35.000 | DEBUG | catchment:readRainfall:200 - Rainfall data are read successfully\n", - "2022-03-19 23:55:35.022 | DEBUG | catchment:readTemperature:253 - Temperature data are read successfully\n", - "2022-03-19 23:55:35.058 | DEBUG | catchment:readET:295 - Potential Evapotranspiration data are read successfully\n", - "2022-03-19 23:55:35.058 | DEBUG | catchment:readFlowAcc:387 - Flow Accmulation input is read successfully\n", - "2022-03-19 23:55:35.074 | DEBUG | catchment:readFlowDir:441 - Flow Direction input is read successfully\n", - "2022-03-19 23:55:35.074 | DEBUG | catchment:readParameters:624 - Parameters are read successfully\n", - "2022-03-19 23:55:35.074 | DEBUG | catchment:readLumpedModel:678 - Lumped model is read successfully\n" - ] - } - ], - "source": [ - "AreaCoeff = 1530\n", - "InitialCond = [0, 5, 5, 5, 0]\n", - "Snow = 0\n", - "\"\"\"\n", - "Create the model object and read the input data\n", - "\"\"\"\n", - "start = \"2009-01-01\"\n", - "end = \"2009-04-10\"\n", - "name = \"Coello\"\n", - "Coello = Catchment(name, start, end, SpatialResolution=\"Distributed\")\n", - "Coello.readRainfall(PrecPath)\n", - "Coello.readTemperature(TempPath)\n", - "Coello.readET(Evap_Path)\n", - "\n", - "Coello.readFlowAcc(FlowAccPath)\n", - "Coello.readFlowDir(FlowDPath)\n", - "Coello.readParameters(ParPathRun, Snow)\n", - "Coello.readLumpedModel(HBV, AreaCoeff, InitialCond)" - ] - }, - { - "cell_type": "markdown", - "id": "b44a8f0a", - "metadata": {}, - "source": [ - "## Gauges" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "d5e5e837", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-19 23:55:40.105 | DEBUG | catchment:readGaugeTable:773 - Gauge Table is read successfully\n", - "2022-03-19 23:55:40.790 | DEBUG | catchment:readDischargeGauges:867 - Gauges data are read successfully\n" - ] - } - ], - "source": [ - "Coello.readGaugeTable(Path + \"/stations/gauges.csv\", FlowAccPath)\n", - "GaugesPath = Path + \"/stations/\"\n", - "Coello.readDischargeGauges(GaugesPath, column='id', fmt=\"%Y-%m-%d\")" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "89aa8f1d-b7d9-4edc-9ff6-44719155ef84", - "metadata": { - "scrolled": true, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": " id name x y original area area \\\n0 1 Station 1 454795.6728 503143.3264 124.0659 64 \n1 2 Station 2 443847.5736 481850.7151 83.0025 96 \n2 3 station 3 454044.6935 481189.4256 44.8587 16 \n3 4 Station 4 464533.7067 502683.6482 91.4949 80 \n4 5 Station 5 463231.1242 486656.3455 730.1259 784 \n5 6 ExitPoint_coello basin 487292.5152 478045.5720 1453.9185 1408 \n\n area ratio weight cell_row cell_col \n0 1.938530 0.06 4.0 5.0 \n1 0.864609 0.08 9.0 2.0 \n2 2.803669 0.02 9.0 5.0 \n3 1.143686 0.07 4.0 7.0 \n4 0.931283 0.38 8.0 7.0 \n5 1.032613 0.40 10.0 13.0 ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
idnamexyoriginal areaareaarea ratioweightcell_rowcell_col
01Station 1454795.6728503143.3264124.0659641.9385300.064.05.0
12Station 2443847.5736481850.715183.0025960.8646090.089.02.0
23station 3454044.6935481189.425644.8587162.8036690.029.05.0
34Station 4464533.7067502683.648291.4949801.1436860.074.07.0
45Station 5463231.1242486656.3455730.12597840.9312830.388.07.0
56ExitPoint_coello basin487292.5152478045.57201453.918514081.0326130.4010.013.0
\n
" - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Coello.GaugesTable" - ] - }, - { - "cell_type": "markdown", - "id": "599d0d29", - "metadata": {}, - "source": [ - "# Run the model\n", - "\n", - "Outputs:\n", - "----------\n", - " 1-statevariables: [numpy attribute]\n", - " 4D array (rows,cols,time,states) states are [sp,wc,sm,uz,lv]\n", - " 2-qlz: [numpy attribute]\n", - " 3D array of the lower zone discharge\n", - " 3-quz: [numpy attribute]\n", - " 3D array of the upper zone discharge\n", - " 4-qout: [numpy attribute]\n", - " 1D timeseries of discharge at the outlet of the catchment\n", - " of unit m3/sec\n", - " 5-quz_routed: [numpy attribute]\n", - " 3D array of the upper zone discharge accumulated and\n", - " routed at each time step\n", - " 6-qlz_translated: [numpy attribute]\n", - " 3D array of the lower zone discharge translated at each time step\n" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "039f758b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model Run has finished\n" - ] - } - ], - "source": [ - "Run.RunHapi(Coello)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "c69a0d04-b635-4c2e-8968-da28db356c2e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": "(13, 14, 101)" - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import numpy as np\n", - "\n", - "\n", - "np.shape(Coello.Qtot)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "644022f3-d368-4f5d-9acc-da11a8ac5aeb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": "[1.938529688, 0.864609375, 2.80366875, 1.14368625, 0.931283036, 1.032612571]" - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Coello.GaugesTable['area ratio'].tolist()" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "2934e5b9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "----------------------------------\n", - "Gauge - 1\n", - "RMSE= 3.42\n", - "NSE= -39.26\n", - "NSEhf= -34.46\n", - "KGE= -2.52\n", - "WB= 52.92\n", - "Pearson CC= 0.0\n", - "R2 = -39.26\n", - "----------------------------------\n", - "Gauge - 2\n", - "RMSE= 5.7\n", - "NSE= -171.22\n", - "NSEhf= -155.6\n", - "KGE= -10.38\n", - "WB= 73.11\n", - "Pearson CC= 0.29\n", - "R2 = -171.22\n", - "----------------------------------\n", - "Gauge - 3\n", - "RMSE= 1.81\n", - "NSE= -61.56\n", - "NSEhf= -60.02\n", - "KGE= -5.56\n", - "WB= 86.81\n", - "Pearson CC= 0.13\n", - "R2 = -61.56\n", - "----------------------------------\n", - "Gauge - 4\n", - "RMSE= 8.92\n", - "NSE= -25.04\n", - "NSEhf= -26.19\n", - "KGE= -0.53\n", - "WB= 28.22\n", - "Pearson CC= 0.06\n", - "R2 = -25.04\n", - "----------------------------------\n", - "Gauge - 5\n", - "RMSE= 32.47\n", - "NSE= -174.16\n", - "NSEhf= -122.3\n", - "KGE= -8.1\n", - "WB= -153.96\n", - "Pearson CC= 0.06\n", - "R2 = -174.16\n", - "----------------------------------\n", - "Gauge - 6\n", - "RMSE= 37.8\n", - "NSE= -3.75\n", - "NSEhf= -3.0\n", - "KGE= -0.4\n", - "WB= 92.8\n", - "Pearson CC= 0.06\n", - "R2 = -3.75\n" - ] - } - ], - "source": [ - "Coello.extractDischarge()\n", - "\n", - "for i in range(len(Coello.GaugesTable)):\n", - " gaugeid = Coello.GaugesTable.loc[i, 'id']\n", - " print(\"----------------------------------\")\n", - " print(\"Gauge - \" + str(gaugeid))\n", - " print(\"RMSE= \" + str(round(Coello.Metrics.loc['RMSE', gaugeid], 2)))\n", - " print(\"NSE= \" + str(round(Coello.Metrics.loc['NSE', gaugeid], 2)))\n", - " print(\"NSEhf= \" + str(round(Coello.Metrics.loc['NSEhf', gaugeid], 2)))\n", - " print(\"KGE= \" + str(round(Coello.Metrics.loc['KGE', gaugeid], 2)))\n", - " print(\"WB= \" + str(round(Coello.Metrics.loc['WB', gaugeid], 2)))\n", - " print(\"Pearson CC= \" + str(round(Coello.Metrics.loc['Pearson-CC', gaugeid], 2)))\n", - " print(\"R2 = \" + str(round(Coello.Metrics.loc['R2', gaugeid], 2)))" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "c16e2591-fd9a-4354-bf90-6309c74729a3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": " 1 2 3 4 5 6\nRMSE 3.423 5.696 1.813 8.919 32.465 37.804\nNSE -39.257 -171.22 -61.562 -25.038 -174.16 -3.749\nNSEhf -34.457 -155.6 -60.017 -26.189 -122.297 -3.003\nKGE -2.516 -10.377 -5.565 -0.529 -8.1 -0.403\nWB 52.922 73.11 86.813 28.221 -153.961 92.8\nPearson-CC 0.002 0.289 0.128 0.059 0.055 0.058\nR2 -39.257 -171.22 -61.562 -25.038 -174.16 -3.749", - "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
123456
RMSE3.4235.6961.8138.91932.46537.804
NSE-39.257-171.22-61.562-25.038-174.16-3.749
NSEhf-34.457-155.6-60.017-26.189-122.297-3.003
KGE-2.516-10.377-5.565-0.529-8.1-0.403
WB52.92273.1186.81328.221-153.96192.8
Pearson-CC0.0020.2890.1280.0590.0550.058
R2-39.257-171.22-61.562-25.038-174.16-3.749
\n
" - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Coello.Metrics" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "4de445ca-e9e2-4ff4-a70f-0617d90afc1a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": "0.0" - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Coello.Qtot[0, 0, 0]" - ] - }, - { - "cell_type": "markdown", - "id": "2e4ba782", - "metadata": {}, - "source": [ - "### Calculate performance criteria" - ] - }, - { - "cell_type": "markdown", - "id": "c2980c0a", - "metadata": {}, - "source": [ - "### Plot Hydrographs" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "c579251c-9bb0-4cdf-939b-31d412ce583c", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1142 - ----------------------------------\n", - "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1143 - Gauge - 6\n", - "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1144 - RMSE= 37.8\n", - "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1145 - NSE= -3.75\n", - "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1146 - NSEhf= -3.0\n", - "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1147 - KGE= -0.4\n", - "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1148 - WB= 92.8\n", - "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1149 - Pearson-CC= 0.06\n", - "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1152 - R2= -3.75\n" - ] + "cells": [ + { + "cell_type": "markdown", + "id": "9faa83b4-6c5d-4f4e-8962-0559459303de", + "metadata": {}, + "source": [ + "# Hapi" + ] + }, + { + "cell_type": "markdown", + "id": "bfb8c8c0-1fc4-4710-923e-72f99f944349", + "metadata": {}, + "source": [ + "## Conceptual Distributed Hydrological Model" + ] + }, + { + "cell_type": "markdown", + "id": "4297fcd6-b914-4d24-a5f9-5088d3898c43", + "metadata": {}, + "source": [ + "- Please change the Path in the following cell to the directory where you stored the case study data" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "fb95e3bb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "'C:\\\\MyComputer\\\\01Algorithms\\\\Hydrology\\\\Hapi'" + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Comp = \"F:/01Algorithms/Hydrology/HAPI\"\n", + "import os\n", + "\n", + "\n", + "os.chdir(\"../../../\")\n", + "os.getcwd()" + ] + }, + { + "cell_type": "markdown", + "id": "289fceae", + "metadata": {}, + "source": [ + "### Import Modules" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "bf034b9d", + "metadata": {}, + "outputs": [], + "source": [ + "import datetime as dt\n", + "from Hapi.run import Run\n", + "from Hapi.catchment import Catchment\n", + "import Hapi.rrm.hbv_bergestrom92 as HBV" + ] + }, + { + "cell_type": "markdown", + "id": "b73beb97", + "metadata": {}, + "source": [ + "### Paths" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "0b8da008", + "metadata": {}, + "outputs": [], + "source": [ + "Path = \"Examples/Hydrological model/data/distributed_model\"\n", + "PrecPath = Path + \"/prec\"\n", + "Evap_Path = Path + \"/evap\"\n", + "TempPath = Path + \"/temp\"\n", + "FlowAccPath = Path + \"/GIS/acc4000.tif\"\n", + "FlowDPath = Path + \"/GIS/fd4000.tif\"\n", + "\n", + "ParPathRun = Path + \"/Parameter set-Avg/\"" + ] + }, + { + "cell_type": "markdown", + "id": "76644d28", + "metadata": {}, + "source": [ + "### Meteorological data" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "1c5debc4", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-19 23:55:35.000 | DEBUG | catchment:readRainfall:200 - Rainfall data are read successfully\n", + "2022-03-19 23:55:35.022 | DEBUG | catchment:readTemperature:253 - Temperature data are read successfully\n", + "2022-03-19 23:55:35.058 | DEBUG | catchment:readET:295 - Potential Evapotranspiration data are read successfully\n", + "2022-03-19 23:55:35.058 | DEBUG | catchment:readFlowAcc:387 - Flow Accmulation input is read successfully\n", + "2022-03-19 23:55:35.074 | DEBUG | catchment:readFlowDir:441 - Flow Direction input is read successfully\n", + "2022-03-19 23:55:35.074 | DEBUG | catchment:readParameters:624 - Parameters are read successfully\n", + "2022-03-19 23:55:35.074 | DEBUG | catchment:readLumpedModel:678 - Lumped model is read successfully\n" + ] + } + ], + "source": [ + "AreaCoeff = 1530\n", + "InitialCond = [0, 5, 5, 5, 0]\n", + "Snow = 0\n", + "\"\"\"\n", + "Create the model object and read the input data\n", + "\"\"\"\n", + "start = \"2009-01-01\"\n", + "end = \"2009-04-10\"\n", + "name = \"Coello\"\n", + "Coello = Catchment(name, start, end, SpatialResolution=\"Distributed\")\n", + "Coello.readRainfall(PrecPath)\n", + "Coello.readTemperature(TempPath)\n", + "Coello.readET(Evap_Path)\n", + "\n", + "Coello.readFlowAcc(FlowAccPath)\n", + "Coello.readFlowDir(FlowDPath)\n", + "Coello.readParameters(ParPathRun, Snow)\n", + "Coello.readLumpedModel(HBV, AreaCoeff, InitialCond)" + ] + }, + { + "cell_type": "markdown", + "id": "b44a8f0a", + "metadata": {}, + "source": [ + "## Gauges" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "d5e5e837", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-19 23:55:40.105 | DEBUG | catchment:readGaugeTable:773 - Gauge Table is read successfully\n", + "2022-03-19 23:55:40.790 | DEBUG | catchment:readDischargeGauges:867 - Gauges data are read successfully\n" + ] + } + ], + "source": [ + "Coello.readGaugeTable(Path + \"/stations/gauges.csv\", FlowAccPath)\n", + "GaugesPath = Path + \"/stations/\"\n", + "Coello.readDischargeGauges(GaugesPath, column='id', fmt=\"%Y-%m-%d\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "89aa8f1d-b7d9-4edc-9ff6-44719155ef84", + "metadata": { + "scrolled": true, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": " id name x y original area area \\\n0 1 Station 1 454795.6728 503143.3264 124.0659 64 \n1 2 Station 2 443847.5736 481850.7151 83.0025 96 \n2 3 station 3 454044.6935 481189.4256 44.8587 16 \n3 4 Station 4 464533.7067 502683.6482 91.4949 80 \n4 5 Station 5 463231.1242 486656.3455 730.1259 784 \n5 6 ExitPoint_coello basin 487292.5152 478045.5720 1453.9185 1408 \n\n area ratio weight cell_row cell_col \n0 1.938530 0.06 4.0 5.0 \n1 0.864609 0.08 9.0 2.0 \n2 2.803669 0.02 9.0 5.0 \n3 1.143686 0.07 4.0 7.0 \n4 0.931283 0.38 8.0 7.0 \n5 1.032613 0.40 10.0 13.0 ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
idnamexyoriginal areaareaarea ratioweightcell_rowcell_col
01Station 1454795.6728503143.3264124.0659641.9385300.064.05.0
12Station 2443847.5736481850.715183.0025960.8646090.089.02.0
23station 3454044.6935481189.425644.8587162.8036690.029.05.0
34Station 4464533.7067502683.648291.4949801.1436860.074.07.0
45Station 5463231.1242486656.3455730.12597840.9312830.388.07.0
56ExitPoint_coello basin487292.5152478045.57201453.918514081.0326130.4010.013.0
\n
" + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Coello.GaugesTable" + ] + }, + { + "cell_type": "markdown", + "id": "599d0d29", + "metadata": {}, + "source": [ + "# Run the model\n", + "\n", + "Outputs:\n", + "----------\n", + " 1-statevariables: [numpy attribute]\n", + " 4D array (rows,cols,time,states) states are [sp,wc,sm,uz,lv]\n", + " 2-qlz: [numpy attribute]\n", + " 3D array of the lower zone discharge\n", + " 3-quz: [numpy attribute]\n", + " 3D array of the upper zone discharge\n", + " 4-qout: [numpy attribute]\n", + " 1D timeseries of discharge at the outlet of the catchment\n", + " of unit m3/sec\n", + " 5-quz_routed: [numpy attribute]\n", + " 3D array of the upper zone discharge accumulated and\n", + " routed at each time step\n", + " 6-qlz_translated: [numpy attribute]\n", + " 3D array of the lower zone discharge translated at each time step\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "039f758b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model Run has finished\n" + ] + } + ], + "source": [ + "Run.RunHapi(Coello)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "c69a0d04-b635-4c2e-8968-da28db356c2e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "(13, 14, 101)" + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy as np\n", + "\n", + "\n", + "np.shape(Coello.Qtot)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "644022f3-d368-4f5d-9acc-da11a8ac5aeb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "[1.938529688, 0.864609375, 2.80366875, 1.14368625, 0.931283036, 1.032612571]" + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Coello.GaugesTable['area ratio'].tolist()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "2934e5b9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------\n", + "Gauge - 1\n", + "RMSE= 3.42\n", + "NSE= -39.26\n", + "NSEhf= -34.46\n", + "KGE= -2.52\n", + "WB= 52.92\n", + "Pearson CC= 0.0\n", + "R2 = -39.26\n", + "----------------------------------\n", + "Gauge - 2\n", + "RMSE= 5.7\n", + "NSE= -171.22\n", + "NSEhf= -155.6\n", + "KGE= -10.38\n", + "WB= 73.11\n", + "Pearson CC= 0.29\n", + "R2 = -171.22\n", + "----------------------------------\n", + "Gauge - 3\n", + "RMSE= 1.81\n", + "NSE= -61.56\n", + "NSEhf= -60.02\n", + "KGE= -5.56\n", + "WB= 86.81\n", + "Pearson CC= 0.13\n", + "R2 = -61.56\n", + "----------------------------------\n", + "Gauge - 4\n", + "RMSE= 8.92\n", + "NSE= -25.04\n", + "NSEhf= -26.19\n", + "KGE= -0.53\n", + "WB= 28.22\n", + "Pearson CC= 0.06\n", + "R2 = -25.04\n", + "----------------------------------\n", + "Gauge - 5\n", + "RMSE= 32.47\n", + "NSE= -174.16\n", + "NSEhf= -122.3\n", + "KGE= -8.1\n", + "WB= -153.96\n", + "Pearson CC= 0.06\n", + "R2 = -174.16\n", + "----------------------------------\n", + "Gauge - 6\n", + "RMSE= 37.8\n", + "NSE= -3.75\n", + "NSEhf= -3.0\n", + "KGE= -0.4\n", + "WB= 92.8\n", + "Pearson CC= 0.06\n", + "R2 = -3.75\n" + ] + } + ], + "source": [ + "Coello.extractDischarge()\n", + "\n", + "for i in range(len(Coello.GaugesTable)):\n", + " gaugeid = Coello.GaugesTable.loc[i, 'id']\n", + " print(\"----------------------------------\")\n", + " print(\"Gauge - \" + str(gaugeid))\n", + " print(\"RMSE= \" + str(round(Coello.Metrics.loc['RMSE', gaugeid], 2)))\n", + " print(\"NSE= \" + str(round(Coello.Metrics.loc['NSE', gaugeid], 2)))\n", + " print(\"NSEhf= \" + str(round(Coello.Metrics.loc['NSEhf', gaugeid], 2)))\n", + " print(\"KGE= \" + str(round(Coello.Metrics.loc['KGE', gaugeid], 2)))\n", + " print(\"WB= \" + str(round(Coello.Metrics.loc['WB', gaugeid], 2)))\n", + " print(\"Pearson CC= \" + str(round(Coello.Metrics.loc['Pearson-CC', gaugeid], 2)))\n", + " print(\"R2 = \" + str(round(Coello.Metrics.loc['R2', gaugeid], 2)))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c16e2591-fd9a-4354-bf90-6309c74729a3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": " 1 2 3 4 5 6\nRMSE 3.423 5.696 1.813 8.919 32.465 37.804\nNSE -39.257 -171.22 -61.562 -25.038 -174.16 -3.749\nNSEhf -34.457 -155.6 -60.017 -26.189 -122.297 -3.003\nKGE -2.516 -10.377 -5.565 -0.529 -8.1 -0.403\nWB 52.922 73.11 86.813 28.221 -153.961 92.8\nPearson-CC 0.002 0.289 0.128 0.059 0.055 0.058\nR2 -39.257 -171.22 -61.562 -25.038 -174.16 -3.749", + "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
123456
RMSE3.4235.6961.8138.91932.46537.804
NSE-39.257-171.22-61.562-25.038-174.16-3.749
NSEhf-34.457-155.6-60.017-26.189-122.297-3.003
KGE-2.516-10.377-5.565-0.529-8.1-0.403
WB52.92273.1186.81328.221-153.96192.8
Pearson-CC0.0020.2890.1280.0590.0550.058
R2-39.257-171.22-61.562-25.038-174.16-3.749
\n
" + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Coello.Metrics" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "4de445ca-e9e2-4ff4-a70f-0617d90afc1a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "0.0" + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Coello.Qtot[0, 0, 0]" + ] + }, + { + "cell_type": "markdown", + "id": "2e4ba782", + "metadata": {}, + "source": [ + "### Calculate performance criteria" + ] + }, + { + "cell_type": "markdown", + "id": "c2980c0a", + "metadata": {}, + "source": [ + "### Plot Hydrographs" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "c579251c-9bb0-4cdf-939b-31d412ce583c", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1142 - ----------------------------------\n", + "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1143 - Gauge - 6\n", + "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1144 - RMSE= 37.8\n", + "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1145 - NSE= -3.75\n", + "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1146 - NSEhf= -3.0\n", + "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1147 - KGE= -0.4\n", + "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1148 - WB= 92.8\n", + "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1149 - Pearson-CC= 0.06\n", + "2022-03-19 23:56:20.760 | DEBUG | catchment:plotHydrograph:1152 - R2= -3.75\n" + ] + }, + { + "data": { + "text/plain": "(
,\n )" + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": "
", + "image/png": "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ly5d6NKlC1dddRWVlZX17q+U4sorryQrK4uBAwfy1VdfWdteeukla9x9+vTh2WeftbZt27aNY445huzsbNq3b89BBx2Ez+cDnFrt7bffzqmnnspf//pXMjIyGDJkiC4Po2m1eL0+Nmwvtda7d0iLyHliIqCUUn8opfKUUr2UUr0whNJIpdQW4CNgsogkiUhvoD8wNxbjjDUPPfQQv//+O1OmTGHWrFm88MILvPzyy3XckF999VV69OjBtGnTKCkp4brrrnNsV0oxe/ZsFi1axIgRI5gyZQpTpkzhm2++YdWqVZSUlDRoVnz99dd56aWXyM/Pp6qqigcffBCA7777DjC0tJKSEsaMGVNvH++88w633347r7zyCsXFxXz00Ufk5ORQXV3Nsccey8SJE8nPz+fxxx/nL3/5i2W+vP7661m2bBkLFixgxYoVbNy4kTvuuKPRa3fXXXcxZ84cFixYwG+//cbcuXO58847693/p59+ok+fPmzbto1///vfnHjiiezYYUyb5uXl8fHHH1NcXMxLL73E1VdfbQnXhx56iG7dulFQUMDWrVu5++6763UT/+ijj5g8eTKFhYUcd9xxIZlyNZp4ZGthOdU1xoNYTkYSackJETlPtNzM3wB+BPYQkQ0icn59+yqlFgFvA4uBT4HLlVLxP2PfAo4//niys7Ot1/PPPw9Aamoqr732Gtdccw1nnnkmjz/+uMMpIBRyc3Np3749F1xwAffeey/jxo1j6tSpXHPNNfTp04f09HTuuece3nzzzXrnks4991wGDBhASkoKp556KgsWLGjyZ/zvf//Lddddxz777IOI0K9fP3r27MmcOXMoKSnhhhtuIDExkcMOO4xjjjmGN954A6UUzz//PI888gjt27cnIyODm266iTfffLPR802dOpVbb72VvLw8OnTowG233carr75a7/55eXlcddVVJCQkcNppp7HHHnswffp0AI4++mj69u2LiHDIIYcwceJEZs2aBRi58zZv3szatWtJSEjgoIMOqldAHXjggRx11FG43W7OOussfvstcPpVo2kd2M17PTpExrwHUZqDUkqd3sj2XgHrdwF3RWo8t58xitvPGBWp7pvM//73v3rnoEaPHk2fPn3Iz8/n1FNPbXLf27Ztw+Nxfs2bNm2iZ8+e1nrPnj2pqalh69atQfvo1KmTtZyamkpJSUnQ/Rpi/fr19O3bt077pk2b6N69Oy6X/1mpZ8+ebNy4kYKCAsrKyth7772tbUqpkDwMg33GTZvqtxR37drVIVjs+8+YMYN///vfLFu2DJ/PR1lZGUOHDgXgn//8J7fffjsTJxrTqRdddBE33HBD0HMEXseKigpqamrqfD8aTbwTLQG1W2SSaM08+eSTVFZW0qVLl6BzS7U0JftAly5dWLvWX2F53bp1eDweOnbs2KSxNeWc3bt3Z+XKlUHHsn79emvepnY8Xbt2JTc3l5SUFBYtWkRhYSGFhYUUFRWFJCCDfcYuXbrUu//GjRtRStXZv7KykpNOOol//OMfbN26lcLCQo466ihr34yMDB566CFWrVrFtGnTePjhhx3zVxpNW2T9Nv/8kxZQuynLli3jlltu4bXXXuPVV1/l/vvvr9e81rFjR1atWhVSv6effjqPPPIIq1evpqSkhJtuuonTTjutyU/yHTp0wOVyhXTeCy64gAcffJBffvkFpRQrVqxg7dq17LvvvqSlpXH//fdTXV3NzJkzmTZtGpMnT8blcnHhhRdy9dVXW8lTN27cyGeffRbSZ7zzzjspKChg27Zt3HHHHZx55pn17p+fn89jjz1GdXU177zzDkuWLOGoo46iqqqKyspKOnTogMfjYcaMGXz++efWcR9//DErVqxAKUVmZiZutzskF32NpjWjNajdiFrvu9rXCSecQE1NDWeeeSbXX389w4YNo3///tx9992cddZZQb3RbrzxRu68806ys7MtJ4b6OO+88zjrrLM4+OCD6d27N8nJyTz++ONNHndqaio333wzBxxwANnZ2cyZM6fefU855RRuvvlmzjjjDDIyMjj++OPZsWMHiYmJfPTRR8yYMYPc3Fwuu+wyXnnlFQYOHAjAfffdR79+/dhvv/3IzMxk/Pjxjviv+rjlllsYNWoUe+21F0OHDmXkyJHccsst9e6/7777snz5cnJzc7n55pt59913ycnJISMjg8cee4xTTz2Vdu3a8frrr3PcccdZxy1fvpzx48eTnp7OmDFjuOyyy3Tsk6bNEy0BJXazRmtm1KhRKpjb7pIlSxg0aFAMRqTRNB9932rimb2vep/5K41wkx8fmMR+A5s2PRCIiPyilKrjGKA1KI1Go9E0CUeQrjbxaVoDl1xyicNUWfu65JJLYj00jUYTJiqrvZRVGiEpHrfQ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\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "gaugei = 5\n", + "plotstart = \"2009-01-01\"\n", + "plotend = \"2009-04-10\"\n", + "\n", + "Coello.plotHydrograph(plotstart, plotend, gaugei)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "cddc19ab-ab6b-41bc-b64a-db8967305604", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-19 23:56:56.203 | DEBUG | catchment:ListAttributes:1473 - \n", + "\n", + "2022-03-19 23:56:56.204 | DEBUG | catchment:ListAttributes:1474 - Attributes List of: 'Coello' - Catchment Instance\n", + "\n", + "2022-03-19 23:56:56.205 | DEBUG | catchment:ListAttributes:1485 - BankfullDepth : None\n", + "2022-03-19 23:56:56.205 | DEBUG | catchment:ListAttributes:1485 - CatArea : 1530\n", + "2022-03-19 23:56:56.206 | DEBUG | catchment:ListAttributes:1485 - CellSize : 4000.0\n", + "2022-03-19 23:56:56.207 | DEBUG | catchment:ListAttributes:1485 - DEM : None\n", + "2022-03-19 23:56:56.208 | DEBUG | catchment:ListAttributes:1485 - ET : array([[[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " ...,\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", + "\n", + " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " ...,\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", + "\n", + " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " ...,\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", + "\n", + " ...,\n", + "\n", + " [[ 1.77111775e-02, 9.56501126e-01, 1.51735938e+00, ...,\n", + " 1.25663066e+00, 6.80986702e-01, 1.73039889e+00],\n", + " [ 1.77111775e-02, 9.56501126e-01, 1.51735938e+00, ...,\n", + " 1.25663066e+00, 6.80986702e-01, 1.73039889e+00],\n", + " [ 1.77111775e-02, 9.56501126e-01, 1.51735938e+00, ...,\n", + " 1.25663066e+00, 6.80986702e-01, 1.73039889e+00],\n", + " ...,\n", + " [ 4.15349528e-02, 1.21806288e+00, 1.64584959e+00, ...,\n", + " 1.64210105e+00, 9.54626918e-01, 1.72286034e+00],\n", + " [ 4.15349528e-02, 1.21806288e+00, 1.64584959e+00, ...,\n", + " 1.64210105e+00, 9.54626918e-01, 1.72286034e+00],\n", + " [ 3.82029563e-02, 1.24551022e+00, 1.63756120e+00, ...,\n", + " 1.72827482e+00, 1.03638577e+00, 1.71973658e+00]],\n", + "\n", + " [[ 1.77111775e-02, 9.56501126e-01, 1.51735938e+00, ...,\n", + " 1.25663066e+00, 6.80986702e-01, 1.73039889e+00],\n", + " [ 1.77111775e-02, 9.56501126e-01, 1.51735938e+00, ...,\n", + " 1.25663066e+00, 6.80986702e-01, 1.73039889e+00],\n", + " [ 1.77111775e-02, 9.56501126e-01, 1.51735938e+00, ...,\n", + " 1.25663066e+00, 6.80986702e-01, 1.73039889e+00],\n", + " ...,\n", + " [ 4.15349528e-02, 1.21806288e+00, 1.64584959e+00, ...,\n", + " 1.64210105e+00, 9.54626918e-01, 1.72286034e+00],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", + "\n", + " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [ 1.77111775e-02, 9.56501126e-01, 1.51735938e+00, ...,\n", + " 1.25663066e+00, 6.80986702e-01, 1.73039889e+00],\n", + " [ 1.77111775e-02, 9.56501126e-01, 1.51735938e+00, ...,\n", + " 1.25663066e+00, 6.80986702e-01, 1.73039889e+00],\n", + " ...,\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]]])\n", + "2022-03-19 23:56:56.209 | DEBUG | catchment:ListAttributes:1485 - FDT : {'1,5': [], '1,6': [], '1,7': [], '2,5': [(1, 5)], '2,6': [], '2,7': [(1, 6), (1, 7)], '3,3': [], '3,4': [], '3,5': [(2, 5)], '3,6': [], '3,7': [(2, 6), (2, 7)], '3,8': [], '3,9': [], '4,3': [], '4,4': [(3, 3), (3, 4), (4, 3), (5, 3)], '4,5': [(3, 5), (3, 6)], '4,6': [], '4,7': [(3, 7)], '4,8': [(3, 8), (3, 9)], '4,9': [], '5,3': [], '5,4': [], '5,5': [(4, 4), (4, 5), (4, 6)], '5,6': [], '5,7': [], '5,8': [(4, 7), (4, 8), (5, 7)], '5,9': [(4, 9)], '6,2': [], '6,3': [], '6,4': [], '6,5': [(5, 4), (5, 5), (5, 6), (6, 4)], '6,6': [], '6,7': [], '6,8': [], '6,9': [(5, 8), (5, 9)], '7,1': [], '7,2': [(7, 1)], '7,3': [(6, 2)], '7,4': [(6, 3), (7, 3), (8, 3)], '7,5': [(7, 4), (8, 4)], '7,6': [(6, 5), (6, 6), (7, 5), (8, 5), (8, 6)], '7,7': [(6, 7)], '7,8': [], '7,9': [(6, 8), (6, 9)], '8,1': [], '8,2': [(8, 1)], '8,3': [(7, 2), (8, 2), (9, 2)], '8,4': [(9, 3), (9, 4)], '8,5': [], '8,6': [], '8,7': [(7, 6)], '8,8': [(7, 7), (7, 8), (8, 7)], '8,9': [], '8,10': [(7, 9)], '8,11': [(8, 10)], '8,12': [], '9,1': [], '9,2': [(9, 1), (10, 1)], '9,3': [(10, 2), (10, 3)], '9,4': [], '9,5': [(10, 4)], '9,6': [(9, 5), (10, 5)], '9,7': [(9, 6)], '9,8': [(9, 7)], '9,9': [(8, 8), (9, 8)], '9,10': [(8, 9)], '9,11': [(9, 10)], '9,12': [(8, 11), (8, 12), (9, 11), (10, 11)], '10,0': [], '10,1': [(10, 0), (11, 0), (11, 1)], '10,2': [(11, 2)], '10,3': [], '10,4': [], '10,5': [], '10,7': [], '10,8': [(10, 7)], '10,9': [(10, 8)], '10,10': [(9, 9), (10, 9)], '10,11': [(10, 10), (11, 10), (11, 11)], '10,12': [], '10,13': [(9, 12), (10, 12)], '11,0': [], '11,1': [(12, 1)], '11,2': [(12, 2)], '11,9': [], '11,10': [(11, 9)], '11,11': [], '12,1': [], '12,2': []}\n", + "2022-03-19 23:56:56.209 | DEBUG | catchment:ListAttributes:1485 - FPLArr : None\n", + "2022-03-19 23:56:56.210 | DEBUG | catchment:ListAttributes:1485 - FloodPlainRoughness : None\n", + "2022-03-19 23:56:56.212 | DEBUG | catchment:ListAttributes:1485 - FlowAccArr : array([[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,\n", + " nan],\n", + " [nan, nan, nan, nan, nan, 0., 0., 0., nan, nan, nan, nan, nan,\n", + " nan],\n", + " [nan, nan, nan, nan, nan, 1., 0., 2., nan, nan, nan, nan, nan,\n", + " nan],\n", + " [nan, nan, nan, 0., 0., 2., 0., 4., 0., 0., nan, nan, nan,\n", + " nan],\n", + " [nan, nan, nan, 0., 4., 4., 0., 5., 2., 0., nan, nan, nan,\n", + " nan],\n", + " [nan, nan, nan, 0., 0., 11., 0., 0., 10., 1., nan, nan, nan,\n", + " nan],\n", + " [nan, nan, 0., 0., 0., 15., 0., 0., 0., 13., nan, nan, nan,\n", + " nan],\n", + " [nan, 0., 1., 1., 15., 23., 43., 1., 0., 15., nan, nan, nan,\n", + " nan],\n", + " [nan, 0., 1., 11., 6., 0., 0., 44., 48., 0., 16., 17., 0.,\n", + " nan],\n", + " [nan, 0., 6., 4., 0., 1., 3., 4., 5., 55., 1., 2., 86.,\n", + " nan],\n", + " [ 0., 4., 2., 0., 0., 0., nan, 0., 1., 2., 59., 63., 0.,\n", + " 88.],\n", + " [ 0., 1., 1., nan, nan, nan, nan, nan, nan, 0., 1., 0., nan,\n", + " nan],\n", + " [nan, 0., 0., nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,\n", + " nan]], dtype=float32)\n", + "2022-03-19 23:56:56.214 | DEBUG | catchment:ListAttributes:1485 - FlowDirArr : array([[ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan],\n", + " [ nan, nan, nan, nan, nan, 4., 2., 4., nan, nan, nan,\n", + " nan, nan, nan],\n", + " [ nan, nan, nan, nan, nan, 4., 2., 4., nan, nan, nan,\n", + " nan, nan, nan],\n", + " [ nan, nan, nan, 2., 4., 4., 8., 4., 4., 8., nan,\n", + " nan, nan, nan],\n", + " [ nan, nan, nan, 1., 2., 4., 8., 2., 4., 4., nan,\n", + " nan, nan, nan],\n", + " [ nan, nan, nan, 128., 2., 4., 8., 1., 2., 4., nan,\n", + " nan, nan, nan],\n", + " [ nan, nan, 2., 2., 1., 2., 4., 4., 2., 4., nan,\n", + " nan, nan, nan],\n", + " [ nan, 1., 2., 1., 1., 1., 2., 2., 4., 2., nan,\n", + " nan, nan, nan],\n", + " [ nan, 1., 1., 128., 128., 128., 64., 1., 2., 2., 1.,\n", + " 2., 4., nan],\n", + " [ nan, 1., 128., 128., 64., 1., 1., 1., 1., 2., 1.,\n", + " 1., 2., nan],\n", + " [ 1., 128., 128., 64., 128., 128., nan, 1., 1., 1., 1.,\n", + " 128., 1., 1.],\n", + " [128., 64., 64., nan, nan, nan, nan, nan, nan, 1., 128.,\n", + " 64., nan, nan],\n", + " [ nan, 64., 64., nan, nan, nan, nan, nan, nan, nan, nan,\n", + " nan, nan, nan]])\n", + "2022-03-19 23:56:56.218 | DEBUG | catchment:ListAttributes:1485 - GaugesTable : id name x y original area area \\\n", + "0 1 Station 1 454795.6728 503143.3264 124.0659 64 \n", + "1 2 Station 2 443847.5736 481850.7151 83.0025 96 \n", + "2 3 station 3 454044.6935 481189.4256 44.8587 16 \n", + "3 4 Station 4 464533.7067 502683.6482 91.4949 80 \n", + "4 5 Station 5 463231.1242 486656.3455 730.1259 784 \n", + "5 6 ExitPoint_coello basin 487292.5152 478045.5720 1453.9185 1408 \n", + "\n", + " area ratio weight cell_row cell_col \n", + "0 1.938530 0.06 4.0 5.0 \n", + "1 0.864609 0.08 9.0 2.0 \n", + "2 2.803669 0.02 9.0 5.0 \n", + "3 1.143686 0.07 4.0 7.0 \n", + "4 0.931283 0.38 8.0 7.0 \n", + "5 1.032613 0.40 10.0 13.0 \n", + "2022-03-19 23:56:56.219 | DEBUG | catchment:ListAttributes:1485 - Index : DatetimeIndex(['2009-01-01', '2009-01-02', '2009-01-03', '2009-01-04',\n", + " '2009-01-05', '2009-01-06', '2009-01-07', '2009-01-08',\n", + " '2009-01-09', '2009-01-10', '2009-01-11', '2009-01-12',\n", + " '2009-01-13', '2009-01-14', '2009-01-15', '2009-01-16',\n", + " '2009-01-17', '2009-01-18', '2009-01-19', '2009-01-20',\n", + " '2009-01-21', '2009-01-22', '2009-01-23', '2009-01-24',\n", + " '2009-01-25', '2009-01-26', '2009-01-27', '2009-01-28',\n", + " '2009-01-29', '2009-01-30', '2009-01-31', '2009-02-01',\n", + " '2009-02-02', '2009-02-03', '2009-02-04', '2009-02-05',\n", + " '2009-02-06', '2009-02-07', '2009-02-08', '2009-02-09',\n", + " '2009-02-10', '2009-02-11', '2009-02-12', '2009-02-13',\n", + " '2009-02-14', '2009-02-15', '2009-02-16', '2009-02-17',\n", + " '2009-02-18', '2009-02-19', '2009-02-20', '2009-02-21',\n", + " '2009-02-22', '2009-02-23', '2009-02-24', '2009-02-25',\n", + " '2009-02-26', '2009-02-27', '2009-02-28', '2009-03-01',\n", + " '2009-03-02', '2009-03-03', '2009-03-04', '2009-03-05',\n", + " '2009-03-06', '2009-03-07', '2009-03-08', '2009-03-09',\n", + " '2009-03-10', '2009-03-11', '2009-03-12', '2009-03-13',\n", + " '2009-03-14', '2009-03-15', '2009-03-16', '2009-03-17',\n", + " '2009-03-18', '2009-03-19', '2009-03-20', '2009-03-21',\n", + " '2009-03-22', '2009-03-23', '2009-03-24', '2009-03-25',\n", + " '2009-03-26', '2009-03-27', '2009-03-28', '2009-03-29',\n", + " '2009-03-30', '2009-03-31', '2009-04-01', '2009-04-02',\n", + " '2009-04-03', '2009-04-04', '2009-04-05', '2009-04-06',\n", + " '2009-04-07', '2009-04-08', '2009-04-09', '2009-04-10'],\n", + " dtype='datetime64[ns]', freq='D')\n", + "2022-03-19 23:56:56.219 | DEBUG | catchment:ListAttributes:1485 - InitialCond : [0, 5, 5, 5, 0]\n", + "2022-03-19 23:56:56.220 | DEBUG | catchment:ListAttributes:1485 - LB : None\n", + "2022-03-19 23:56:56.220 | DEBUG | catchment:ListAttributes:1485 - LumpedModel : \n", + "2022-03-19 23:56:56.220 | DEBUG | catchment:ListAttributes:1485 - Maxbas : False\n", + "2022-03-19 23:56:56.222 | DEBUG | catchment:ListAttributes:1485 - Metrics : 1 2 3 4 5 6\n", + "RMSE 3.423 5.696 1.813 8.919 32.465 37.804\n", + "NSE -39.257 -171.22 -61.562 -25.038 -174.16 -3.749\n", + "NSEhf -34.457 -155.6 -60.017 -26.189 -122.297 -3.003\n", + "KGE -2.516 -10.377 -5.565 -0.529 -8.1 -0.403\n", + "WB 52.922 73.11 86.813 28.221 -153.961 92.8\n", + "Pearson-CC 0.002 0.289 0.128 0.059 0.055 0.058\n", + "R2 -39.257 -171.22 -61.562 -25.038 -174.16 -3.749\n", + "2022-03-19 23:56:56.223 | DEBUG | catchment:ListAttributes:1485 - NoDataValue : -3.4028230607370965e+38\n", + "2022-03-19 23:56:56.224 | DEBUG | catchment:ListAttributes:1485 - Outlet : (array([10], dtype=int64), array([13], dtype=int64))\n", + "2022-03-19 23:56:56.226 | DEBUG | catchment:ListAttributes:1485 - Parameters : array([[[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " ...,\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", + "\n", + " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " ...,\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", + "\n", + " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " ...,\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", + "\n", + " ...,\n", + "\n", + " [[ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", + " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", + " [ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", + " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", + " [ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", + " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", + " ...,\n", + " [ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", + " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", + " [ 1.00000000e+00, 3.87115601e+02, 2.47988439e+00, ...,\n", + " 2.16319084e+00, 1.00000000e+00, 2.00000003e-01],\n", + " [ 1.00000000e+00, 3.87115601e+02, 2.47988439e+00, ...,\n", + " 2.16319084e+00, 1.00000000e+00, 2.00000003e-01]],\n", + "\n", + " [[ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", + " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", + " [ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", + " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", + " [ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", + " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", + " ...,\n", + " [ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", + " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", + "\n", + " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", + " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", + " [ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", + " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", + " ...,\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]]])\n", + "2022-03-19 23:56:56.228 | DEBUG | catchment:ListAttributes:1485 - Prec : array([[[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " ...,\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", + "\n", + " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " ...,\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", + "\n", + " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " ...,\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", + "\n", + " ...,\n", + "\n", + " [[ 0.00000000e+00, 1.17984429e-01, 4.60531387e+01, ...,\n", + " 8.87507820e+00, 4.57323227e+01, 2.93493795e+00],\n", + " [ 0.00000000e+00, 1.17984429e-01, 4.60531387e+01, ...,\n", + " 8.87507820e+00, 4.57323227e+01, 2.93493795e+00],\n", + " [ 0.00000000e+00, 1.17984429e-01, 4.60531387e+01, ...,\n", + " 8.87507820e+00, 4.57323227e+01, 2.93493795e+00],\n", + " ...,\n", + " [ 0.00000000e+00, 0.00000000e+00, 5.57280769e+01, ...,\n", + " 1.14022045e+01, 5.49952316e+01, 8.98489118e-01],\n", + " [ 0.00000000e+00, 0.00000000e+00, 5.57280769e+01, ...,\n", + " 1.14022045e+01, 5.49952316e+01, 8.98489118e-01],\n", + " [ 0.00000000e+00, 0.00000000e+00, 5.57280769e+01, ...,\n", + " 1.14022045e+01, 5.49952316e+01, 8.98489118e-01]],\n", + "\n", + " [[ 0.00000000e+00, 1.17984429e-01, 4.60531387e+01, ...,\n", + " 8.87507820e+00, 4.57323227e+01, 2.93493795e+00],\n", + " [ 0.00000000e+00, 1.17984429e-01, 4.60531387e+01, ...,\n", + " 8.87507820e+00, 4.57323227e+01, 2.93493795e+00],\n", + " [ 0.00000000e+00, 1.17984429e-01, 4.60531387e+01, ...,\n", + " 8.87507820e+00, 4.57323227e+01, 2.93493795e+00],\n", + " ...,\n", + " [ 0.00000000e+00, 0.00000000e+00, 5.57280769e+01, ...,\n", + " 1.14022045e+01, 5.49952316e+01, 8.98489118e-01],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", + "\n", + " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [ 0.00000000e+00, 1.17984429e-01, 4.60531387e+01, ...,\n", + " 8.87507820e+00, 4.57323227e+01, 2.93493795e+00],\n", + " [ 0.00000000e+00, 1.17984429e-01, 4.60531387e+01, ...,\n", + " 8.87507820e+00, 4.57323227e+01, 2.93493795e+00],\n", + " ...,\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]]])\n", + "2022-03-19 23:56:56.228 | DEBUG | catchment:ListAttributes:1485 - QGauges : 1 2 3 4 5 6\n", + "2009-01-01 5.7419 5.4107 2.3597 9.8377 7.5267 51.10\n", + "2009-01-02 5.7031 5.3758 2.3417 9.7978 7.5049 56.23\n", + "2009-01-03 5.6591 5.3352 2.3198 9.5690 7.4573 52.22\n", + "2009-01-04 5.6148 5.2932 2.2974 9.4168 7.3963 47.72\n", + "2009-01-05 5.6120 5.2627 2.2814 9.9453 7.3964 41.31\n", + "... ... ... ... ... ... ...\n", + "2009-04-06 5.6228 4.0301 1.8296 11.1075 10.9704 59.14\n", + "2009-04-07 5.3678 4.0210 1.7919 10.5306 9.7286 62.71\n", + "2009-04-08 5.7448 4.2507 1.9626 10.9888 10.7837 60.33\n", + "2009-04-09 6.7815 4.4249 2.1252 11.8458 11.1332 56.16\n", + "2009-04-10 7.0558 4.7724 2.2216 13.8444 14.5430 82.55\n", + "\n", + "[100 rows x 6 columns]\n", + "2022-03-19 23:56:56.228 | DEBUG | catchment:ListAttributes:1485 - Qsim : 1 2 3 4 5 6\n", + "2009-01-01 2.263228 3.275576 0.926703 2.715874 20.561756 40.898766\n", + "2009-01-02 1.915765 2.995825 0.614302 2.444056 21.234455 42.858639\n", + "2009-01-03 1.285448 2.265347 0.323537 1.904549 20.360205 42.151131\n", + "2009-01-04 0.810543 1.460448 0.184355 1.285660 18.279316 40.193218\n", + "2009-01-05 0.527455 0.925445 0.152025 0.797311 15.578760 38.100803\n", + "... ... ... ... ... ... ...\n", + "2009-04-06 7.866113 18.959234 6.432921 8.279245 53.550659 94.774048\n", + "2009-04-07 7.445977 20.309471 5.375726 8.953537 69.562012 103.555908\n", + "2009-04-08 6.495067 18.573339 4.400487 8.361993 82.610237 109.817581\n", + "2009-04-09 7.903990 20.301352 6.889159 9.348463 95.347885 125.540184\n", + "2009-04-10 8.605656 21.092295 6.161833 9.444534 103.210861 140.248596\n", + "\n", + "[100 rows x 6 columns]\n", + "2022-03-19 23:56:56.228 | DEBUG | catchment:ListAttributes:1485 - Qtot : array([[[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " ...,\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],\n", + "\n", + " [[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " ...,\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],\n", + "\n", + " [[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " ...,\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],\n", + "\n", + " ...,\n", + "\n", + " [[4.74056929e-01, 2.46969044e-01, 8.88363346e-02, ...,\n", + " 4.37286615e+00, 2.68815064e+00, 0.00000000e+00],\n", + " [2.37028456e+00, 2.07438564e+00, 1.29365373e+00, ...,\n", + " 1.50085831e+01, 1.63515816e+01, 8.35635853e+00],\n", + " [1.42217076e+00, 1.18357384e+00, 7.69919217e-01, ...,\n", + " 9.67619896e+00, 9.16165733e+00, 4.55875015e+00],\n", + " ...,\n", + " [2.93761368e+01, 3.05775604e+01, 2.97358780e+01, ...,\n", + " 9.75536194e+01, 1.11385307e+02, 8.63508987e+01],\n", + " [4.56657469e-01, 3.02252680e-01, 8.46222714e-02, ...,\n", + " 6.61646748e+00, 2.60082245e+00, 0.00000000e+00],\n", + " [4.08987656e+01, 4.28586388e+01, 4.21511307e+01, ...,\n", + " 1.25540184e+02, 1.40248596e+02, 1.05040260e+02]],\n", + "\n", + " [[4.74056929e-01, 2.46969044e-01, 8.88363346e-02, ...,\n", + " 4.37286615e+00, 2.68815064e+00, 0.00000000e+00],\n", + " [9.48113859e-01, 6.92374885e-01, 3.50703537e-01, ...,\n", + " 7.03905821e+00, 6.28311300e+00, 1.89880431e+00],\n", + " [9.48113859e-01, 6.92374885e-01, 3.50703537e-01, ...,\n", + " 7.03905821e+00, 6.28311300e+00, 1.89880431e+00],\n", + " ...,\n", + " [4.74056929e-01, 2.46967852e-01, 8.88450071e-02, ...,\n", + " 6.23447227e+00, 2.77513909e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],\n", + "\n", + " [[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [4.74056929e-01, 2.46969044e-01, 8.88363346e-02, ...,\n", + " 4.37286615e+00, 2.68815064e+00, 0.00000000e+00],\n", + " [4.74056929e-01, 2.46969044e-01, 8.88363346e-02, ...,\n", + " 4.37286615e+00, 2.68815064e+00, 0.00000000e+00],\n", + " ...,\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", + " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]], dtype=float32)\n", + "2022-03-19 23:56:56.228 | DEBUG | catchment:ListAttributes:1485 - RiverRoughness : None\n", + "2022-03-19 23:56:56.228 | DEBUG | catchment:ListAttributes:1485 - RiverWidth : None\n", + "2022-03-19 23:56:56.228 | DEBUG | catchment:ListAttributes:1485 - RouteRiver : 'Muskingum'\n", + "2022-03-19 23:56:56.228 | DEBUG | catchment:ListAttributes:1485 - Snow : 0\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - SpatialResolution : 'distributed'\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - TS : 101\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - Temp : array([[[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " ...,\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", + "\n", + " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " ...,\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", + "\n", + " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " ...,\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", + "\n", + " ...,\n", + "\n", + " [[ 2.84896870e+01, 2.85865803e+01, 2.91636639e+01, ...,\n", + " 2.72752037e+01, 2.72234440e+01, 2.90380611e+01],\n", + " [ 2.84896870e+01, 2.85865803e+01, 2.91636639e+01, ...,\n", + " 2.72752037e+01, 2.72234440e+01, 2.90380611e+01],\n", + " [ 2.84896870e+01, 2.85865803e+01, 2.91636639e+01, ...,\n", + " 2.72752037e+01, 2.72234440e+01, 2.90380611e+01],\n", + " ...,\n", + " [ 2.83492470e+01, 2.82137051e+01, 2.92850571e+01, ...,\n", + " 2.73552589e+01, 2.68131657e+01, 2.85098381e+01],\n", + " [ 2.83492470e+01, 2.82137051e+01, 2.92850571e+01, ...,\n", + " 2.73552589e+01, 2.68131657e+01, 2.85098381e+01],\n", + " [ 2.83034916e+01, 2.81027336e+01, 2.92750492e+01, ...,\n", + " 2.73133678e+01, 2.67461548e+01, 2.83543530e+01]],\n", + "\n", + " [[ 2.84896870e+01, 2.85865803e+01, 2.91636639e+01, ...,\n", + " 2.72752037e+01, 2.72234440e+01, 2.90380611e+01],\n", + " [ 2.84896870e+01, 2.85865803e+01, 2.91636639e+01, ...,\n", + " 2.72752037e+01, 2.72234440e+01, 2.90380611e+01],\n", + " [ 2.84896870e+01, 2.85865803e+01, 2.91636639e+01, ...,\n", + " 2.72752037e+01, 2.72234440e+01, 2.90380611e+01],\n", + " ...,\n", + " [ 2.83492470e+01, 2.82137051e+01, 2.92850571e+01, ...,\n", + " 2.73552589e+01, 2.68131657e+01, 2.85098381e+01],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", + "\n", + " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [ 2.84896870e+01, 2.85865803e+01, 2.91636639e+01, ...,\n", + " 2.72752037e+01, 2.72234440e+01, 2.90380611e+01],\n", + " [ 2.84896870e+01, 2.85865803e+01, 2.91636639e+01, ...,\n", + " 2.72752037e+01, 2.72234440e+01, 2.90380611e+01],\n", + " ...,\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", + " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", + " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]]])\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - TemporalResolution : 'daily'\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - UB : None\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - acc_val : [0, 1, 2, 3, 4, 5, 6, 10, 11, 13, 15, 16, 17, 23, 43, 44, 48, 55, 59, 63, 86, 88]\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - anim : None\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - cols : 14\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - conversionfactor : 86.4\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - data : None\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - dt : 1\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - end : datetime.datetime(2009, 4, 10, 0, 0)\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - ll_temp : array([[[-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " ...,\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38]],\n", + "\n", + " [[-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " ...,\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38]],\n", + "\n", + " [[-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " ...,\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38]],\n", + "\n", + " ...,\n", + "\n", + " [[ 2.8653997e+01, 2.8653997e+01, 2.8653997e+01, ...,\n", + " 2.8653997e+01, 2.8653997e+01, 2.8653997e+01],\n", + " [ 2.8653997e+01, 2.8653997e+01, 2.8653997e+01, ...,\n", + " 2.8653997e+01, 2.8653997e+01, 2.8653997e+01],\n", + " [ 2.8653997e+01, 2.8653997e+01, 2.8653997e+01, ...,\n", + " 2.8653997e+01, 2.8653997e+01, 2.8653997e+01],\n", + " ...,\n", + " [ 2.8671383e+01, 2.8671383e+01, 2.8671383e+01, ...,\n", + " 2.8671383e+01, 2.8671383e+01, 2.8671383e+01],\n", + " [ 2.8671383e+01, 2.8671383e+01, 2.8671383e+01, ...,\n", + " 2.8671383e+01, 2.8671383e+01, 2.8671383e+01],\n", + " [ 2.8630550e+01, 2.8630550e+01, 2.8630550e+01, ...,\n", + " 2.8630550e+01, 2.8630550e+01, 2.8630550e+01]],\n", + "\n", + " [[ 2.8653997e+01, 2.8653997e+01, 2.8653997e+01, ...,\n", + " 2.8653997e+01, 2.8653997e+01, 2.8653997e+01],\n", + " [ 2.8653997e+01, 2.8653997e+01, 2.8653997e+01, ...,\n", + " 2.8653997e+01, 2.8653997e+01, 2.8653997e+01],\n", + " [ 2.8653997e+01, 2.8653997e+01, 2.8653997e+01, ...,\n", + " 2.8653997e+01, 2.8653997e+01, 2.8653997e+01],\n", + " ...,\n", + " [ 2.8671383e+01, 2.8671383e+01, 2.8671383e+01, ...,\n", + " 2.8671383e+01, 2.8671383e+01, 2.8671383e+01],\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38]],\n", + "\n", + " [[-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " [ 2.8653997e+01, 2.8653997e+01, 2.8653997e+01, ...,\n", + " 2.8653997e+01, 2.8653997e+01, 2.8653997e+01],\n", + " [ 2.8653997e+01, 2.8653997e+01, 2.8653997e+01, ...,\n", + " 2.8653997e+01, 2.8653997e+01, 2.8653997e+01],\n", + " ...,\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", + " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", + " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38]]], dtype=float32)\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - no_elem : 89\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - px_area : 16.0\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - px_tot_area : 1424.0\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - q_init : None\n", + "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - qlz : array([[[0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " ...,\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]],\n", + "\n", + " [[0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " ...,\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]],\n", + "\n", + " [[0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " ...,\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]],\n", + "\n", + " ...,\n", + "\n", + " [[0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", + " 0.49174854, 0. ],\n", + " [0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", + " 0.49174854, 0. ],\n", + " [0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", + " 0.49174854, 0. ],\n", + " ...,\n", + " [0.05067997, 0.08155993, 0.08884501, ..., 0.4827707 ,\n", + " 0.48905724, 0. ],\n", + " [0.04988309, 0.07146442, 0.08462227, ..., 0.35991618,\n", + " 0.36345086, 0. ],\n", + " [0.04988309, 0.07146442, 0.08462227, ..., 0.35944986,\n", + " 0.3630079 , 0. ]],\n", + "\n", + " [[0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", + " 0.49174854, 0. ],\n", + " [0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", + " 0.49174854, 0. ],\n", + " [0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", + " 0.49174854, 0. ],\n", + " ...,\n", + " [0.05067997, 0.08155993, 0.08884501, ..., 0.4827707 ,\n", + " 0.48905724, 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]],\n", + "\n", + " [[0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", + " 0.49174854, 0. ],\n", + " [0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", + " 0.49174854, 0. ],\n", + " ...,\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]]], dtype=float32)\n", + "2022-03-19 23:56:56.260 | DEBUG | catchment:ListAttributes:1485 - qlz_translated : array([[[ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]],\n", + "\n", + " ...,\n", + "\n", + " [[ 0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", + " 0.49174854, 0. ],\n", + " [ 0.25339985, 0.40779966, 0.44418168, ..., 2.4280324 ,\n", + " 2.4587426 , 0. ],\n", + " [ 0.15203992, 0.24467981, 0.266509 , ..., 1.4568195 ,\n", + " 1.4752456 , 0. ],\n", + " ...,\n", + " [ 2.4726863 , 4.1705813 , 4.462921 , ..., 32.567966 ,\n", + " 33.009247 , 0. ],\n", + " [ 0.04988309, 0.07146442, 0.08462227, ..., 0.35991618,\n", + " 0.36345086, 0. ],\n", + " [ 3.3864908 , 5.6943026 , 6.1069126 , ..., 44.61512 ,\n", + " 45.232674 , 0. ]],\n", + "\n", + " [[ 0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", + " 0.49174854, 0. ],\n", + " [ 0.10135994, 0.16311987, 0.17767267, ..., 0.971213 ,\n", + " 0.9834971 , 0. ],\n", + " [ 0.10135994, 0.16311987, 0.17767267, ..., 0.971213 ,\n", + " 0.9834971 , 0. ],\n", + " ...,\n", + " [ 0.05067997, 0.08155993, 0.08884501, ..., 0.4827707 ,\n", + " 0.48905724, 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", + " 0.49174854, 0. ],\n", + " [ 0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", + " 0.49174854, 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]]], dtype=float32)\n", + "2022-03-19 23:56:56.260 | DEBUG | catchment:ListAttributes:1485 - qout : array([ 40.898766 , 42.85864 , 42.15113 , 40.19322 , 38.100803 ,\n", + " 35.758636 , 33.73754 , 30.630371 , 27.391954 , 23.816029 ,\n", + " 20.414543 , 18.291088 , 16.189606 , 14.184235 , 11.959721 ,\n", + " 10.271119 , 9.040911 , 9.115901 , 8.954173 , 9.7257805,\n", + " 9.492704 , 9.077841 , 9.901954 , 9.674218 , 10.634078 ,\n", + " 13.200643 , 16.444237 , 18.678535 , 21.044052 , 21.090816 ,\n", + " 20.970753 , 21.27523 , 22.27513 , 21.72365 , 20.95892 ,\n", + " 20.12223 , 21.492516 , 23.169922 , 23.946625 , 23.315025 ,\n", + " 24.145033 , 27.559956 , 33.74961 , 41.527096 , 47.869907 ,\n", + " 51.519356 , 55.979744 , 60.126442 , 63.59916 , 66.857056 ,\n", + " 69.11042 , 73.32504 , 77.7796 , 81.23607 , 85.51257 ,\n", + " 89.727 , 92.92263 , 95.096855 , 95.61752 , 94.608574 ,\n", + " 93.20772 , 93.16734 , 92.77138 , 92.19656 , 94.929016 ,\n", + " 97.35497 , 98.34743 , 97.09517 , 95.99574 , 93.6085 ,\n", + " 93.23897 , 91.823456 , 91.66304 , 89.38716 , 88.857765 ,\n", + " 86.88518 , 82.08201 , 81.60626 , 86.12597 , 92.95073 ,\n", + " 99.01169 , 104.29736 , 109.84674 , 115.185486 , 118.47419 ,\n", + " 122.07793 , 121.75287 , 117.706985 , 110.52746 , 101.827156 ,\n", + " 92.64522 , 81.34973 , 76.95682 , 74.75282 , 85.21558 ,\n", + " 94.77405 , 103.55591 , 109.81758 , 125.540184 , 140.2486 ,\n", + " 105.04026 ], dtype=float32)\n", + "2022-03-19 23:56:56.260 | DEBUG | catchment:ListAttributes:1485 - quz : array([[[0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " ...,\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]],\n", + "\n", + " [[0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " ...,\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]],\n", + "\n", + " [[0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " ...,\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]],\n", + "\n", + " ...,\n", + "\n", + " [[0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", + " 2.196402 , 0. ],\n", + " [0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", + " 2.196402 , 0. ],\n", + " [0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", + " 2.196402 , 0. ],\n", + " ...,\n", + " [0.42337695, 0.16540791, 0. , ..., 5.7517014 ,\n", + " 2.2860818 , 0. ],\n", + " [0.40677437, 0.23078826, 0. , ..., 6.2565513 ,\n", + " 2.2373717 , 0. ],\n", + " [0.40677437, 0.23078826, 0. , ..., 6.2277727 ,\n", + " 2.2354305 , 0. ]],\n", + "\n", + " [[0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", + " 2.196402 , 0. ],\n", + " [0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", + " 2.196402 , 0. ],\n", + " [0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", + " 2.196402 , 0. ],\n", + " ...,\n", + " [0.42337695, 0.16540791, 0. , ..., 5.7517014 ,\n", + " 2.2860818 , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]],\n", + "\n", + " [[0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", + " 2.196402 , 0. ],\n", + " [0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", + " 2.196402 , 0. ],\n", + " ...,\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]]], dtype=float32)\n", + "2022-03-19 23:56:56.260 | DEBUG | catchment:ListAttributes:1485 - quz_routed : array([[[ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]],\n", + "\n", + " ...,\n", + "\n", + " [[ 0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", + " 2.196402 , 0. ],\n", + " [ 2.1168847 , 1.6665859 , 0.849472 , ..., 12.580551 ,\n", + " 13.892839 , 8.356359 ],\n", + " [ 1.2701309 , 0.93889403, 0.5034102 , ..., 8.219379 ,\n", + " 7.686412 , 4.55875 ],\n", + " ...,\n", + " [ 26.90345 , 26.406979 , 25.272957 , ..., 64.98565 ,\n", + " 78.37606 , 86.3509 ],\n", + " [ 0.40677437, 0.23078826, 0. , ..., 6.2565513 ,\n", + " 2.2373717 , 0. ],\n", + " [ 37.512276 , 37.164337 , 36.04422 , ..., 80.925064 ,\n", + " 95.015915 , 105.04026 ]],\n", + "\n", + " [[ 0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", + " 2.196402 , 0. ],\n", + " [ 0.8467539 , 0.52925503, 0.17303088, ..., 6.0678453 ,\n", + " 5.299616 , 1.8988043 ],\n", + " [ 0.8467539 , 0.52925503, 0.17303088, ..., 6.0678453 ,\n", + " 5.299616 , 1.8988043 ],\n", + " ...,\n", + " [ 0.42337695, 0.16540791, 0. , ..., 5.7517014 ,\n", + " 2.2860818 , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", + " 2.196402 , 0. ],\n", + " [ 0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", + " 2.196402 , 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ],\n", + " [ 0. , 0. , 0. , ..., 0. ,\n", + " 0. , 0. ]]], dtype=float32)\n", + "2022-03-19 23:56:56.260 | DEBUG | catchment:ListAttributes:1485 - rows : 13\n", + "2022-03-19 23:56:56.260 | DEBUG | catchment:ListAttributes:1485 - start : datetime.datetime(2009, 1, 1, 0, 0)\n", + "2022-03-19 23:56:56.276 | DEBUG | catchment:ListAttributes:1485 - statevariables : array([[[[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " ...,\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]]],\n", + "\n", + "\n", + " [[[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " ...,\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]]],\n", + "\n", + "\n", + " [[[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " ...,\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]]],\n", + "\n", + "\n", + " ...,\n", + "\n", + "\n", + " [[[ 0. , 5. , 5. , 5. ,\n", + " 0. ],\n", + " [ 0. , 5.100931 , 1.1221229, 7.636654 ,\n", + " 0. ],\n", + " [ 0. , 51.103764 , 0. , 8.317961 ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 307.2126 , 26.37088 , 45.46851 ,\n", + " 0. ],\n", + " [ 0. , 305.13776 , 14.900228 , 46.043602 ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 5. , 5. , 5. ,\n", + " 0. ],\n", + " [ 0. , 5.100931 , 1.1221229, 7.636654 ,\n", + " 0. ],\n", + " [ 0. , 51.103764 , 0. , 8.317961 ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 307.2126 , 26.37088 , 45.46851 ,\n", + " 0. ],\n", + " [ 0. , 305.13776 , 14.900228 , 46.043602 ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 5. , 5. , 5. ,\n", + " 0. ],\n", + " [ 0. , 5.100931 , 1.1221229, 7.636654 ,\n", + " 0. ],\n", + " [ 0. , 51.103764 , 0. , 8.317961 ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 307.2126 , 26.37088 , 45.46851 ,\n", + " 0. ],\n", + " [ 0. , 305.13776 , 14.900228 , 46.043602 ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " ...,\n", + "\n", + " [[ 0. , 5. , 5. , 5. ,\n", + " 0. ],\n", + " [ 0. , 4.9873815, 1.1221149, 7.636654 ,\n", + " 0. ],\n", + " [ 0. , 60.658325 , 0. , 8.318772 ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 311.54718 , 29.21958 , 45.20299 ,\n", + " 0. ],\n", + " [ 0. , 310.17596 , 15.508608 , 45.79161 ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 5. , 5. , 5. ,\n", + " 0. ],\n", + " [ 0. , 4.98834 , 1.6768945, 6.804019 ,\n", + " 0. ],\n", + " [ 0. , 60.6685 , 0. , 8.056759 ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 372.78818 , 28.846308 , 34.267075 ,\n", + " 0. ],\n", + " [ 0. , 371.42386 , 16.256618 , 34.603603 ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 5. , 5. , 5. ,\n", + " 0. ],\n", + " [ 0. , 4.989619 , 1.6768945, 6.804019 ,\n", + " 0. ],\n", + " [ 0. , 60.669113 , 0. , 8.056759 ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 372.6207 , 28.823357 , 34.22268 ,\n", + " 0. ],\n", + " [ 0. , 371.4571 , 16.242514 , 34.561436 ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]]],\n", + "\n", + "\n", + " [[[ 0. , 5. , 5. , 5. ,\n", + " 0. ],\n", + " [ 0. , 5.100931 , 1.1221229, 7.636654 ,\n", + " 0. ],\n", + " [ 0. , 51.103764 , 0. , 8.317961 ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 307.2126 , 26.37088 , 45.46851 ,\n", + " 0. ],\n", + " [ 0. , 305.13776 , 14.900228 , 46.043602 ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 5. , 5. , 5. ,\n", + " 0. ],\n", + " [ 0. , 5.100931 , 1.1221229, 7.636654 ,\n", + " 0. ],\n", + " [ 0. , 51.103764 , 0. , 8.317961 ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 307.2126 , 26.37088 , 45.46851 ,\n", + " 0. ],\n", + " [ 0. , 305.13776 , 14.900228 , 46.043602 ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 5. , 5. , 5. ,\n", + " 0. ],\n", + " [ 0. , 5.100931 , 1.1221229, 7.636654 ,\n", + " 0. ],\n", + " [ 0. , 51.103764 , 0. , 8.317961 ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 307.2126 , 26.37088 , 45.46851 ,\n", + " 0. ],\n", + " [ 0. , 305.13776 , 14.900228 , 46.043602 ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " ...,\n", + "\n", + " [[ 0. , 5. , 5. , 5. ,\n", + " 0. ],\n", + " [ 0. , 4.9873815, 1.1221149, 7.636654 ,\n", + " 0. ],\n", + " [ 0. , 60.658325 , 0. , 8.318772 ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 311.54718 , 29.21958 , 45.20299 ,\n", + " 0. ],\n", + " [ 0. , 310.17596 , 15.508608 , 45.79161 ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]]],\n", + "\n", + "\n", + " [[[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 5. , 5. , 5. ,\n", + " 0. ],\n", + " [ 0. , 5.100931 , 1.1221229, 7.636654 ,\n", + " 0. ],\n", + " [ 0. , 51.103764 , 0. , 8.317961 ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 307.2126 , 26.37088 , 45.46851 ,\n", + " 0. ],\n", + " [ 0. , 305.13776 , 14.900228 , 46.043602 ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 5. , 5. , 5. ,\n", + " 0. ],\n", + " [ 0. , 5.100931 , 1.1221229, 7.636654 ,\n", + " 0. ],\n", + " [ 0. , 51.103764 , 0. , 8.317961 ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 307.2126 , 26.37088 , 45.46851 ,\n", + " 0. ],\n", + " [ 0. , 305.13776 , 14.900228 , 46.043602 ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " ...,\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]],\n", + "\n", + " [[ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " ...,\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ],\n", + " [ 0. , 0. , 0. , 0. ,\n", + " 0. ]]]], dtype=float32)\n", + "2022-03-19 23:56:56.276 | DEBUG | catchment:ListAttributes:1487 - \n", + "\n" + ] + } + ], + "source": [ + "Coello.ListAttributes()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "cf03d1c9-6f6a-4cb0-b5f4-fd02997bc941", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "[]" + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": "
", + "image/png": "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\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "\n", + "plt.plot(Coello.Qtot[12, 1, :])" + ] + }, + { + "cell_type": "markdown", + "id": "efeccdb2", + "metadata": {}, + "source": [ + "### Animation" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "c2f2d994", + "metadata": {}, + "outputs": [ + { + "ename": "RuntimeError", + "evalue": "Requested MovieWriter (ffmpeg) not available", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mRuntimeError\u001b[0m Traceback (most recent call last)", + "Input \u001b[1;32mIn [20]\u001b[0m, in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 8\u001b[0m threshold \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m10\u001b[39m\n\u001b[0;32m 10\u001b[0m Anim \u001b[38;5;241m=\u001b[39m Coello\u001b[38;5;241m.\u001b[39mPlotDistributedResults(plotstart, plotend, Figsize\u001b[38;5;241m=\u001b[39m(\u001b[38;5;241m9\u001b[39m, \u001b[38;5;241m9\u001b[39m), Option\u001b[38;5;241m=\u001b[39mOption, threshold\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m160\u001b[39m,\n\u001b[0;32m 11\u001b[0m PlotNumbers\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[0;32m 12\u001b[0m TicksSpacing\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m5\u001b[39m, Interval\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m200\u001b[39m, Gauges\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m, cmap\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124minferno\u001b[39m\u001b[38;5;124m'\u001b[39m, Textloc\u001b[38;5;241m=\u001b[39m[\u001b[38;5;241m0.1\u001b[39m, \u001b[38;5;241m0.2\u001b[39m],\n\u001b[0;32m 13\u001b[0m Gaugecolor\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mred\u001b[39m\u001b[38;5;124m'\u001b[39m, ColorScale\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m, IDcolor\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mblue\u001b[39m\u001b[38;5;124m'\u001b[39m, IDsize\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m25\u001b[39m)\n\u001b[1;32m---> 14\u001b[0m HTML(\u001b[43mAnim\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mto_html5_video\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m)\n", + "File \u001b[1;32m~\\anaconda\\lib\\site-packages\\matplotlib\\animation.py:1266\u001b[0m, in \u001b[0;36mAnimation.to_html5_video\u001b[1;34m(self, embed_limit)\u001b[0m\n\u001b[0;32m 1263\u001b[0m path \u001b[38;5;241m=\u001b[39m Path(tmpdir, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtemp.m4v\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 1264\u001b[0m \u001b[38;5;66;03m# We create a writer manually so that we can get the\u001b[39;00m\n\u001b[0;32m 1265\u001b[0m \u001b[38;5;66;03m# appropriate size for the tag\u001b[39;00m\n\u001b[1;32m-> 1266\u001b[0m Writer \u001b[38;5;241m=\u001b[39m \u001b[43mwriters\u001b[49m\u001b[43m[\u001b[49m\u001b[43mmpl\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrcParams\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43manimation.writer\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m]\u001b[49m\n\u001b[0;32m 1267\u001b[0m writer \u001b[38;5;241m=\u001b[39m Writer(codec\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mh264\u001b[39m\u001b[38;5;124m'\u001b[39m,\n\u001b[0;32m 1268\u001b[0m bitrate\u001b[38;5;241m=\u001b[39mmpl\u001b[38;5;241m.\u001b[39mrcParams[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124manimation.bitrate\u001b[39m\u001b[38;5;124m'\u001b[39m],\n\u001b[0;32m 1269\u001b[0m fps\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1000.\u001b[39m \u001b[38;5;241m/\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_interval)\n\u001b[0;32m 1270\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msave(\u001b[38;5;28mstr\u001b[39m(path), writer\u001b[38;5;241m=\u001b[39mwriter)\n", + "File \u001b[1;32m~\\anaconda\\lib\\site-packages\\matplotlib\\animation.py:151\u001b[0m, in \u001b[0;36mMovieWriterRegistry.__getitem__\u001b[1;34m(self, name)\u001b[0m\n\u001b[0;32m 149\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mis_available(name):\n\u001b[0;32m 150\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_registered[name]\n\u001b[1;32m--> 151\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRequested MovieWriter (\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m) not available\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "\u001b[1;31mRuntimeError\u001b[0m: Requested MovieWriter (ffmpeg) not available" + ] + }, + { + "data": { + "text/plain": "
", + "image/png": "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xsfAGcDKeFNlqEVMREREwmeQtnRc7z4YeMwyyxD0AH7r7nPjCpNNhZiIiIgUNHd/E/hk3DlyUSEmIiIikdD0FbvTGDERERGRmKhFTEREREKXmUUstjFiiaUWMREREZGYqEWsQFXumB13BOmC9HvTtrF9JsYdQTpIv8utScX67hojtjsVYiIiIhKJGKevSCx1TYqIiIjERC1iIiIiErrMUH21iLWkFjERERGRmKhFTERERCKhFrHdqUVMREREJCZqERMREZEIaELXXNQiJiIiIhITtYiJiIhI6BzNI5aLWsREREREYqIWMREREYmA5hHLRYWYiIiIRMJjXusyidQ1KSIiIhITtYiJiIhI6LTEUW5qERMRERGJiVrEREREJBJqEdudWsREREREYqIWMREREYmA667JHNQiJiIiIhITtYiJiIhI6ByNEctFLWIiIiIiMVGLmIiIiETC1SK2GxViIiIiEgEnrcH6u1HXpIiIiEhM1CImIiIioXPUNZmLWsREREREYqIWMREREYmAk3aNEWtJLWIiIiIiMVGLmIiIiERCY8R2pxYxERERkZioRUxEREQioEW/c1GLmIiIiEhM1CImIiIioXMg7Roj1pIKMREREYmAa7B+DntUiG3zzVTumB1Wlj02ts/EuCOISDeSpL9/IlIY1CImIiIi4XNwTei6Gw3WFxEREYmJWsREREQkdJkRYhoj1pJaxERERERiohYxERERiYRr+ordqEVMREREJCZqERMREZEIaImjXNQiJiIiIhITtYiJiIhIJDRGbHcqxERERCQCWuIoF3VNioiIiMRELWIiIiISOkdLHOWiFjERERGRmKhFTERERCLgGqyfg1rERERERGKiFjERERGJhO6a3J1axERERERiohYxERERCZ9rQtdc1CImIiIiEhO1iImIiEgENLN+LirEREREJHSa0DU3dU2KiIiIxEQtYiIiIhIBB3VN7kYtYiIiIiIxUYuYiIiIRELTV+xOLWIiIiIiMVGLmIiIiERA01fkohYxERERkZioRUxEREQiohaxltQiJiIiIhITtYiJiIhINHTX5G5UiImIiEgENFg/F3VNioiIiMRELWIiIiISEbWItaQWMREREZGYmLt3/GSzD4C3w4sjIiIiIfq4u+8fxxubFbmF2BHn1D/v7qNbf3+bAPwMKAZ+5e63hBZmD+zRJxLXD09ERERkb5lZMfD/AacDa4GlZjbH3VfFm0xjxERERCQSjtPxXrg8OxF4w93fBDCzh4DzgNgLMY0RExERkUJ3EPBu1vO1wb7YqUVMREREovA0NAwK8fV7m9myrOez3H1W8NhynB9b81w2FWIiIiISOnefEOPbrwUOzno+BHgvpizNqGtSRERECt1SYJiZHWZmJcCFwJyYMwFqERMREZEC5+4NZjYJeJrM9BX3ufsrMccC9nAeMRERERHJH3VNioiIiMREhZiIiIhITFSIiYiIiMREhZiIiIhITFSIiYiIiMREhZiIiIhITFSIiYiIiMREhZiIiIhITP5/xbK71etYqdwAAAAASUVORK5CYII=\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "% matplotlib inline\n", + "from IPython.display import HTML\n", + "\n", + "\n", + "plotstart = \"2009-01-01\"\n", + "plotend = \"2009-01-20\"\n", + "Option = 5\n", + "threshold = 10\n", + "\n", + "Anim = Coello.plotDistributedResults(plotstart, plotend, Figsize=(9, 9), Option=Option, threshold=160,\n", + " PlotNumbers=False,\n", + " TicksSpacing=5, Interval=200, Gauges=True, cmap='inferno', Textloc=[0.1, 0.2],\n", + " Gaugecolor='red', ColorScale=2, IDcolor='blue', IDsize=25)\n", + "HTML(Anim.to_html5_video())" + ] + }, + { + "cell_type": "markdown", + "id": "6ec8aec1-2d06-4823-8f34-52ddf100562b", + "metadata": {}, + "source": [ + "- if you like to save the animation" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "38879dae-84bd-4548-9025-4c153b298160", + "metadata": {}, + "outputs": [], + "source": [ + "SaveTo = Path + \"anim.mov\"\n", + "Coello.saveAnimation(VideoFormat=\"mov\", Path=SaveTo, SaveFrames=3)" + ] + }, + { + "cell_type": "markdown", + "id": "5e9a0c7f-a173-46d7-a72f-39a21dfea980", + "metadata": {}, + "source": [ + "# 11-Store the result into rasters" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "cc604109-7328-4a0c-ba7a-c9a960d95285", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data is saved successfully\n" + ] + } + ], + "source": [ + "StartDate = \"2009-01-01\"\n", + "EndDate = \"2010-04-20\"\n", + "Prefix = 'Qtot_'\n", + "SaveTo = Path + \"/results/\"\n", + "Coello.saveResults(FlowAccPath, Result=1, StartDate=StartDate, EndDate=EndDate,\n", + " Path=SaveTo, Prefix=Prefix)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "a36944d8-73f7-4a97-9fbb-11ab0cb338fc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Hapi/Model/results/anim.mov'" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Path" + ] + } + ], + "metadata": { + "kernelspec": { + "name": "pycharm-e2d4c152", + "language": "python", + "display_name": "PyCharm (pythonProject)" + }, + "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.8.10" + } }, - { - "data": { - "text/plain": "(
,\n )" - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "text/plain": "
", - "image/png": "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ly5d6NKlC1dddRWVlZX17q+U4sorryQrK4uBAwfy1VdfWdteeukla9x9+vTh2WeftbZt27aNY445huzsbNq3b89BBx2Ez+cDnFrt7bffzqmnnspf//pXMjIyGDJkiC4Po2m1eL0+Nmwvtda7d0iLyHliIqCUUn8opfKUUr2UUr0whNJIpdQW4CNgsogkiUhvoD8wNxbjjDUPPfQQv//+O1OmTGHWrFm88MILvPzyy3XckF999VV69OjBtGnTKCkp4brrrnNsV0oxe/ZsFi1axIgRI5gyZQpTpkzhm2++YdWqVZSUlDRoVnz99dd56aWXyM/Pp6qqigcffBCA7777DjC0tJKSEsaMGVNvH++88w633347r7zyCsXFxXz00Ufk5ORQXV3Nsccey8SJE8nPz+fxxx/nL3/5i2W+vP7661m2bBkLFixgxYoVbNy4kTvuuKPRa3fXXXcxZ84cFixYwG+//cbcuXO58847693/p59+ok+fPmzbto1///vfnHjiiezYYUyb5uXl8fHHH1NcXMxLL73E1VdfbQnXhx56iG7dulFQUMDWrVu5++6763UT/+ijj5g8eTKFhYUcd9xxIZlyNZp4ZGthOdU1xoNYTkYSackJETlPtNzM3wB+BPYQkQ0icn59+yqlFgFvA4uBT4HLlVLxP2PfAo4//niys7Ot1/PPPw9Aamoqr732Gtdccw1nnnkmjz/+uMMpIBRyc3Np3749F1xwAffeey/jxo1j6tSpXHPNNfTp04f09HTuuece3nzzzXrnks4991wGDBhASkoKp556KgsWLGjyZ/zvf//Lddddxz777IOI0K9fP3r27MmcOXMoKSnhhhtuIDExkcMOO4xjjjmGN954A6UUzz//PI888gjt27cnIyODm266iTfffLPR802dOpVbb72VvLw8OnTowG233carr75a7/55eXlcddVVJCQkcNppp7HHHnswffp0AI4++mj69u2LiHDIIYcwceJEZs2aBRi58zZv3szatWtJSEjgoIMOqldAHXjggRx11FG43W7OOussfvstcPpVo2kd2M17PTpExrwHUZqDUkqd3sj2XgHrdwF3RWo8t58xitvPGBWp7pvM//73v3rnoEaPHk2fPn3Iz8/n1FNPbXLf27Ztw+Nxfs2bNm2iZ8+e1nrPnj2pqalh69atQfvo1KmTtZyamkpJSUnQ/Rpi/fr19O3bt077pk2b6N69Oy6X/1mpZ8+ebNy4kYKCAsrKyth7772tbUqpkDwMg33GTZvqtxR37drVIVjs+8+YMYN///vfLFu2DJ/PR1lZGUOHDgXgn//8J7fffjsTJxrTqRdddBE33HBD0HMEXseKigpqamrqfD8aTbwTLQG1W2SSaM08+eSTVFZW0qVLl6BzS7U0JftAly5dWLvWX2F53bp1eDweOnbs2KSxNeWc3bt3Z+XKlUHHsn79emvepnY8Xbt2JTc3l5SUFBYtWkRhYSGFhYUUFRWFJCCDfcYuXbrUu//GjRtRStXZv7KykpNOOol//OMfbN26lcLCQo466ihr34yMDB566CFWrVrFtGnTePjhhx3zVxpNW2T9Nv/8kxZQuynLli3jlltu4bXXXuPVV1/l/vvvr9e81rFjR1atWhVSv6effjqPPPIIq1evpqSkhJtuuonTTjutyU/yHTp0wOVyhXTeCy64gAcffJBffvkFpRQrVqxg7dq17LvvvqSlpXH//fdTXV3NzJkzmTZtGpMnT8blcnHhhRdy9dVXW8lTN27cyGeffRbSZ7zzzjspKChg27Zt3HHHHZx55pn17p+fn89jjz1GdXU177zzDkuWLOGoo46iqqqKyspKOnTogMfjYcaMGXz++efWcR9//DErVqxAKUVmZiZutzskF32NpjWjNajdiFrvu9rXCSecQE1NDWeeeSbXX389w4YNo3///tx9992cddZZQb3RbrzxRu68806ys7MtJ4b6OO+88zjrrLM4+OCD6d27N8nJyTz++ONNHndqaio333wzBxxwANnZ2cyZM6fefU855RRuvvlmzjjjDDIyMjj++OPZsWMHiYmJfPTRR8yYMYPc3Fwuu+wyXnnlFQYOHAjAfffdR79+/dhvv/3IzMxk/Pjxjviv+rjlllsYNWoUe+21F0OHDmXkyJHccsst9e6/7777snz5cnJzc7n55pt59913ycnJISMjg8cee4xTTz2Vdu3a8frrr3PcccdZxy1fvpzx48eTnp7OmDFjuOyyy3Tsk6bNEy0BJXazRmtm1KhRKpjb7pIlSxg0aFAMRqTRNB9932rimb2vep/5K41wkx8fmMR+A5s2PRCIiPyilKrjGKA1KI1Go9E0CUeQrjbxaVoDl1xyicNUWfu65JJLYj00jUYTJiqrvZRVGiEpHrfQ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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "gaugei = 5\n", - "plotstart = \"2009-01-01\"\n", - "plotend = \"2009-04-10\"\n", - "\n", - "Coello.plotHydrograph(plotstart, plotend, gaugei)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "cddc19ab-ab6b-41bc-b64a-db8967305604", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-19 23:56:56.203 | DEBUG | catchment:ListAttributes:1473 - \n", - "\n", - "2022-03-19 23:56:56.204 | DEBUG | catchment:ListAttributes:1474 - Attributes List of: 'Coello' - Catchment Instance\n", - "\n", - "2022-03-19 23:56:56.205 | DEBUG | catchment:ListAttributes:1485 - BankfullDepth : None\n", - "2022-03-19 23:56:56.205 | DEBUG | catchment:ListAttributes:1485 - CatArea : 1530\n", - "2022-03-19 23:56:56.206 | DEBUG | catchment:ListAttributes:1485 - CellSize : 4000.0\n", - "2022-03-19 23:56:56.207 | DEBUG | catchment:ListAttributes:1485 - DEM : None\n", - "2022-03-19 23:56:56.208 | DEBUG | catchment:ListAttributes:1485 - ET : array([[[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " ...,\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", - "\n", - " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " ...,\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", - "\n", - " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " ...,\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", - "\n", - " ...,\n", - "\n", - " [[ 1.77111775e-02, 9.56501126e-01, 1.51735938e+00, ...,\n", - " 1.25663066e+00, 6.80986702e-01, 1.73039889e+00],\n", - " [ 1.77111775e-02, 9.56501126e-01, 1.51735938e+00, ...,\n", - " 1.25663066e+00, 6.80986702e-01, 1.73039889e+00],\n", - " [ 1.77111775e-02, 9.56501126e-01, 1.51735938e+00, ...,\n", - " 1.25663066e+00, 6.80986702e-01, 1.73039889e+00],\n", - " ...,\n", - " [ 4.15349528e-02, 1.21806288e+00, 1.64584959e+00, ...,\n", - " 1.64210105e+00, 9.54626918e-01, 1.72286034e+00],\n", - " [ 4.15349528e-02, 1.21806288e+00, 1.64584959e+00, ...,\n", - " 1.64210105e+00, 9.54626918e-01, 1.72286034e+00],\n", - " [ 3.82029563e-02, 1.24551022e+00, 1.63756120e+00, ...,\n", - " 1.72827482e+00, 1.03638577e+00, 1.71973658e+00]],\n", - "\n", - " [[ 1.77111775e-02, 9.56501126e-01, 1.51735938e+00, ...,\n", - " 1.25663066e+00, 6.80986702e-01, 1.73039889e+00],\n", - " [ 1.77111775e-02, 9.56501126e-01, 1.51735938e+00, ...,\n", - " 1.25663066e+00, 6.80986702e-01, 1.73039889e+00],\n", - " [ 1.77111775e-02, 9.56501126e-01, 1.51735938e+00, ...,\n", - " 1.25663066e+00, 6.80986702e-01, 1.73039889e+00],\n", - " ...,\n", - " [ 4.15349528e-02, 1.21806288e+00, 1.64584959e+00, ...,\n", - " 1.64210105e+00, 9.54626918e-01, 1.72286034e+00],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", - "\n", - " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [ 1.77111775e-02, 9.56501126e-01, 1.51735938e+00, ...,\n", - " 1.25663066e+00, 6.80986702e-01, 1.73039889e+00],\n", - " [ 1.77111775e-02, 9.56501126e-01, 1.51735938e+00, ...,\n", - " 1.25663066e+00, 6.80986702e-01, 1.73039889e+00],\n", - " ...,\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]]])\n", - "2022-03-19 23:56:56.209 | DEBUG | catchment:ListAttributes:1485 - FDT : {'1,5': [], '1,6': [], '1,7': [], '2,5': [(1, 5)], '2,6': [], '2,7': [(1, 6), (1, 7)], '3,3': [], '3,4': [], '3,5': [(2, 5)], '3,6': [], '3,7': [(2, 6), (2, 7)], '3,8': [], '3,9': [], '4,3': [], '4,4': [(3, 3), (3, 4), (4, 3), (5, 3)], '4,5': [(3, 5), (3, 6)], '4,6': [], '4,7': [(3, 7)], '4,8': [(3, 8), (3, 9)], '4,9': [], '5,3': [], '5,4': [], '5,5': [(4, 4), (4, 5), (4, 6)], '5,6': [], '5,7': [], '5,8': [(4, 7), (4, 8), (5, 7)], '5,9': [(4, 9)], '6,2': [], '6,3': [], '6,4': [], '6,5': [(5, 4), (5, 5), (5, 6), (6, 4)], '6,6': [], '6,7': [], '6,8': [], '6,9': [(5, 8), (5, 9)], '7,1': [], '7,2': [(7, 1)], '7,3': [(6, 2)], '7,4': [(6, 3), (7, 3), (8, 3)], '7,5': [(7, 4), (8, 4)], '7,6': [(6, 5), (6, 6), (7, 5), (8, 5), (8, 6)], '7,7': [(6, 7)], '7,8': [], '7,9': [(6, 8), (6, 9)], '8,1': [], '8,2': [(8, 1)], '8,3': [(7, 2), (8, 2), (9, 2)], '8,4': [(9, 3), (9, 4)], '8,5': [], '8,6': [], '8,7': [(7, 6)], '8,8': [(7, 7), (7, 8), (8, 7)], '8,9': [], '8,10': [(7, 9)], '8,11': [(8, 10)], '8,12': [], '9,1': [], '9,2': [(9, 1), (10, 1)], '9,3': [(10, 2), (10, 3)], '9,4': [], '9,5': [(10, 4)], '9,6': [(9, 5), (10, 5)], '9,7': [(9, 6)], '9,8': [(9, 7)], '9,9': [(8, 8), (9, 8)], '9,10': [(8, 9)], '9,11': [(9, 10)], '9,12': [(8, 11), (8, 12), (9, 11), (10, 11)], '10,0': [], '10,1': [(10, 0), (11, 0), (11, 1)], '10,2': [(11, 2)], '10,3': [], '10,4': [], '10,5': [], '10,7': [], '10,8': [(10, 7)], '10,9': [(10, 8)], '10,10': [(9, 9), (10, 9)], '10,11': [(10, 10), (11, 10), (11, 11)], '10,12': [], '10,13': [(9, 12), (10, 12)], '11,0': [], '11,1': [(12, 1)], '11,2': [(12, 2)], '11,9': [], '11,10': [(11, 9)], '11,11': [], '12,1': [], '12,2': []}\n", - "2022-03-19 23:56:56.209 | DEBUG | catchment:ListAttributes:1485 - FPLArr : None\n", - "2022-03-19 23:56:56.210 | DEBUG | catchment:ListAttributes:1485 - FloodPlainRoughness : None\n", - "2022-03-19 23:56:56.212 | DEBUG | catchment:ListAttributes:1485 - FlowAccArr : array([[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,\n", - " nan],\n", - " [nan, nan, nan, nan, nan, 0., 0., 0., nan, nan, nan, nan, nan,\n", - " nan],\n", - " [nan, nan, nan, nan, nan, 1., 0., 2., nan, nan, nan, nan, nan,\n", - " nan],\n", - " [nan, nan, nan, 0., 0., 2., 0., 4., 0., 0., nan, nan, nan,\n", - " nan],\n", - " [nan, nan, nan, 0., 4., 4., 0., 5., 2., 0., nan, nan, nan,\n", - " nan],\n", - " [nan, nan, nan, 0., 0., 11., 0., 0., 10., 1., nan, nan, nan,\n", - " nan],\n", - " [nan, nan, 0., 0., 0., 15., 0., 0., 0., 13., nan, nan, nan,\n", - " nan],\n", - " [nan, 0., 1., 1., 15., 23., 43., 1., 0., 15., nan, nan, nan,\n", - " nan],\n", - " [nan, 0., 1., 11., 6., 0., 0., 44., 48., 0., 16., 17., 0.,\n", - " nan],\n", - " [nan, 0., 6., 4., 0., 1., 3., 4., 5., 55., 1., 2., 86.,\n", - " nan],\n", - " [ 0., 4., 2., 0., 0., 0., nan, 0., 1., 2., 59., 63., 0.,\n", - " 88.],\n", - " [ 0., 1., 1., nan, nan, nan, nan, nan, nan, 0., 1., 0., nan,\n", - " nan],\n", - " [nan, 0., 0., nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,\n", - " nan]], dtype=float32)\n", - "2022-03-19 23:56:56.214 | DEBUG | catchment:ListAttributes:1485 - FlowDirArr : array([[ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan,\n", - " nan, nan, nan],\n", - " [ nan, nan, nan, nan, nan, 4., 2., 4., nan, nan, nan,\n", - " nan, nan, nan],\n", - " [ nan, nan, nan, nan, nan, 4., 2., 4., nan, nan, nan,\n", - " nan, nan, nan],\n", - " [ nan, nan, nan, 2., 4., 4., 8., 4., 4., 8., nan,\n", - " nan, nan, nan],\n", - " [ nan, nan, nan, 1., 2., 4., 8., 2., 4., 4., nan,\n", - " nan, nan, nan],\n", - " [ nan, nan, nan, 128., 2., 4., 8., 1., 2., 4., nan,\n", - " nan, nan, nan],\n", - " [ nan, nan, 2., 2., 1., 2., 4., 4., 2., 4., nan,\n", - " nan, nan, nan],\n", - " [ nan, 1., 2., 1., 1., 1., 2., 2., 4., 2., nan,\n", - " nan, nan, nan],\n", - " [ nan, 1., 1., 128., 128., 128., 64., 1., 2., 2., 1.,\n", - " 2., 4., nan],\n", - " [ nan, 1., 128., 128., 64., 1., 1., 1., 1., 2., 1.,\n", - " 1., 2., nan],\n", - " [ 1., 128., 128., 64., 128., 128., nan, 1., 1., 1., 1.,\n", - " 128., 1., 1.],\n", - " [128., 64., 64., nan, nan, nan, nan, nan, nan, 1., 128.,\n", - " 64., nan, nan],\n", - " [ nan, 64., 64., nan, nan, nan, nan, nan, nan, nan, nan,\n", - " nan, nan, nan]])\n", - "2022-03-19 23:56:56.218 | DEBUG | catchment:ListAttributes:1485 - GaugesTable : id name x y original area area \\\n", - "0 1 Station 1 454795.6728 503143.3264 124.0659 64 \n", - "1 2 Station 2 443847.5736 481850.7151 83.0025 96 \n", - "2 3 station 3 454044.6935 481189.4256 44.8587 16 \n", - "3 4 Station 4 464533.7067 502683.6482 91.4949 80 \n", - "4 5 Station 5 463231.1242 486656.3455 730.1259 784 \n", - "5 6 ExitPoint_coello basin 487292.5152 478045.5720 1453.9185 1408 \n", - "\n", - " area ratio weight cell_row cell_col \n", - "0 1.938530 0.06 4.0 5.0 \n", - "1 0.864609 0.08 9.0 2.0 \n", - "2 2.803669 0.02 9.0 5.0 \n", - "3 1.143686 0.07 4.0 7.0 \n", - "4 0.931283 0.38 8.0 7.0 \n", - "5 1.032613 0.40 10.0 13.0 \n", - "2022-03-19 23:56:56.219 | DEBUG | catchment:ListAttributes:1485 - Index : DatetimeIndex(['2009-01-01', '2009-01-02', '2009-01-03', '2009-01-04',\n", - " '2009-01-05', '2009-01-06', '2009-01-07', '2009-01-08',\n", - " '2009-01-09', '2009-01-10', '2009-01-11', '2009-01-12',\n", - " '2009-01-13', '2009-01-14', '2009-01-15', '2009-01-16',\n", - " '2009-01-17', '2009-01-18', '2009-01-19', '2009-01-20',\n", - " '2009-01-21', '2009-01-22', '2009-01-23', '2009-01-24',\n", - " '2009-01-25', '2009-01-26', '2009-01-27', '2009-01-28',\n", - " '2009-01-29', '2009-01-30', '2009-01-31', '2009-02-01',\n", - " '2009-02-02', '2009-02-03', '2009-02-04', '2009-02-05',\n", - " '2009-02-06', '2009-02-07', '2009-02-08', '2009-02-09',\n", - " '2009-02-10', '2009-02-11', '2009-02-12', '2009-02-13',\n", - " '2009-02-14', '2009-02-15', '2009-02-16', '2009-02-17',\n", - " '2009-02-18', '2009-02-19', '2009-02-20', '2009-02-21',\n", - " '2009-02-22', '2009-02-23', '2009-02-24', '2009-02-25',\n", - " '2009-02-26', '2009-02-27', '2009-02-28', '2009-03-01',\n", - " '2009-03-02', '2009-03-03', '2009-03-04', '2009-03-05',\n", - " '2009-03-06', '2009-03-07', '2009-03-08', '2009-03-09',\n", - " '2009-03-10', '2009-03-11', '2009-03-12', '2009-03-13',\n", - " '2009-03-14', '2009-03-15', '2009-03-16', '2009-03-17',\n", - " '2009-03-18', '2009-03-19', '2009-03-20', '2009-03-21',\n", - " '2009-03-22', '2009-03-23', '2009-03-24', '2009-03-25',\n", - " '2009-03-26', '2009-03-27', '2009-03-28', '2009-03-29',\n", - " '2009-03-30', '2009-03-31', '2009-04-01', '2009-04-02',\n", - " '2009-04-03', '2009-04-04', '2009-04-05', '2009-04-06',\n", - " '2009-04-07', '2009-04-08', '2009-04-09', '2009-04-10'],\n", - " dtype='datetime64[ns]', freq='D')\n", - "2022-03-19 23:56:56.219 | DEBUG | catchment:ListAttributes:1485 - InitialCond : [0, 5, 5, 5, 0]\n", - "2022-03-19 23:56:56.220 | DEBUG | catchment:ListAttributes:1485 - LB : None\n", - "2022-03-19 23:56:56.220 | DEBUG | catchment:ListAttributes:1485 - LumpedModel : \n", - "2022-03-19 23:56:56.220 | DEBUG | catchment:ListAttributes:1485 - Maxbas : False\n", - "2022-03-19 23:56:56.222 | DEBUG | catchment:ListAttributes:1485 - Metrics : 1 2 3 4 5 6\n", - "RMSE 3.423 5.696 1.813 8.919 32.465 37.804\n", - "NSE -39.257 -171.22 -61.562 -25.038 -174.16 -3.749\n", - "NSEhf -34.457 -155.6 -60.017 -26.189 -122.297 -3.003\n", - "KGE -2.516 -10.377 -5.565 -0.529 -8.1 -0.403\n", - "WB 52.922 73.11 86.813 28.221 -153.961 92.8\n", - "Pearson-CC 0.002 0.289 0.128 0.059 0.055 0.058\n", - "R2 -39.257 -171.22 -61.562 -25.038 -174.16 -3.749\n", - "2022-03-19 23:56:56.223 | DEBUG | catchment:ListAttributes:1485 - NoDataValue : -3.4028230607370965e+38\n", - "2022-03-19 23:56:56.224 | DEBUG | catchment:ListAttributes:1485 - Outlet : (array([10], dtype=int64), array([13], dtype=int64))\n", - "2022-03-19 23:56:56.226 | DEBUG | catchment:ListAttributes:1485 - Parameters : array([[[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " ...,\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", - "\n", - " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " ...,\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", - "\n", - " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " ...,\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", - "\n", - " ...,\n", - "\n", - " [[ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", - " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", - " [ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", - " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", - " [ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", - " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", - " ...,\n", - " [ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", - " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", - " [ 1.00000000e+00, 3.87115601e+02, 2.47988439e+00, ...,\n", - " 2.16319084e+00, 1.00000000e+00, 2.00000003e-01],\n", - " [ 1.00000000e+00, 3.87115601e+02, 2.47988439e+00, ...,\n", - " 2.16319084e+00, 1.00000000e+00, 2.00000003e-01]],\n", - "\n", - " [[ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", - " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", - " [ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", - " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", - " [ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", - " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", - " ...,\n", - " [ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", - " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", - "\n", - " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", - " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", - " [ 1.00000000e+00, 3.24018677e+02, 2.16875148e+00, ...,\n", - " 3.04656434e+00, 1.00000000e+00, 2.00000003e-01],\n", - " ...,\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]]])\n", - "2022-03-19 23:56:56.228 | DEBUG | catchment:ListAttributes:1485 - Prec : array([[[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " ...,\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", - "\n", - " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " ...,\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", - "\n", - " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " ...,\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", - "\n", - " ...,\n", - "\n", - " [[ 0.00000000e+00, 1.17984429e-01, 4.60531387e+01, ...,\n", - " 8.87507820e+00, 4.57323227e+01, 2.93493795e+00],\n", - " [ 0.00000000e+00, 1.17984429e-01, 4.60531387e+01, ...,\n", - " 8.87507820e+00, 4.57323227e+01, 2.93493795e+00],\n", - " [ 0.00000000e+00, 1.17984429e-01, 4.60531387e+01, ...,\n", - " 8.87507820e+00, 4.57323227e+01, 2.93493795e+00],\n", - " ...,\n", - " [ 0.00000000e+00, 0.00000000e+00, 5.57280769e+01, ...,\n", - " 1.14022045e+01, 5.49952316e+01, 8.98489118e-01],\n", - " [ 0.00000000e+00, 0.00000000e+00, 5.57280769e+01, ...,\n", - " 1.14022045e+01, 5.49952316e+01, 8.98489118e-01],\n", - " [ 0.00000000e+00, 0.00000000e+00, 5.57280769e+01, ...,\n", - " 1.14022045e+01, 5.49952316e+01, 8.98489118e-01]],\n", - "\n", - " [[ 0.00000000e+00, 1.17984429e-01, 4.60531387e+01, ...,\n", - " 8.87507820e+00, 4.57323227e+01, 2.93493795e+00],\n", - " [ 0.00000000e+00, 1.17984429e-01, 4.60531387e+01, ...,\n", - " 8.87507820e+00, 4.57323227e+01, 2.93493795e+00],\n", - " [ 0.00000000e+00, 1.17984429e-01, 4.60531387e+01, ...,\n", - " 8.87507820e+00, 4.57323227e+01, 2.93493795e+00],\n", - " ...,\n", - " [ 0.00000000e+00, 0.00000000e+00, 5.57280769e+01, ...,\n", - " 1.14022045e+01, 5.49952316e+01, 8.98489118e-01],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", - "\n", - " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [ 0.00000000e+00, 1.17984429e-01, 4.60531387e+01, ...,\n", - " 8.87507820e+00, 4.57323227e+01, 2.93493795e+00],\n", - " [ 0.00000000e+00, 1.17984429e-01, 4.60531387e+01, ...,\n", - " 8.87507820e+00, 4.57323227e+01, 2.93493795e+00],\n", - " ...,\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]]])\n", - "2022-03-19 23:56:56.228 | DEBUG | catchment:ListAttributes:1485 - QGauges : 1 2 3 4 5 6\n", - "2009-01-01 5.7419 5.4107 2.3597 9.8377 7.5267 51.10\n", - "2009-01-02 5.7031 5.3758 2.3417 9.7978 7.5049 56.23\n", - "2009-01-03 5.6591 5.3352 2.3198 9.5690 7.4573 52.22\n", - "2009-01-04 5.6148 5.2932 2.2974 9.4168 7.3963 47.72\n", - "2009-01-05 5.6120 5.2627 2.2814 9.9453 7.3964 41.31\n", - "... ... ... ... ... ... ...\n", - "2009-04-06 5.6228 4.0301 1.8296 11.1075 10.9704 59.14\n", - "2009-04-07 5.3678 4.0210 1.7919 10.5306 9.7286 62.71\n", - "2009-04-08 5.7448 4.2507 1.9626 10.9888 10.7837 60.33\n", - "2009-04-09 6.7815 4.4249 2.1252 11.8458 11.1332 56.16\n", - "2009-04-10 7.0558 4.7724 2.2216 13.8444 14.5430 82.55\n", - "\n", - "[100 rows x 6 columns]\n", - "2022-03-19 23:56:56.228 | DEBUG | catchment:ListAttributes:1485 - Qsim : 1 2 3 4 5 6\n", - "2009-01-01 2.263228 3.275576 0.926703 2.715874 20.561756 40.898766\n", - "2009-01-02 1.915765 2.995825 0.614302 2.444056 21.234455 42.858639\n", - "2009-01-03 1.285448 2.265347 0.323537 1.904549 20.360205 42.151131\n", - "2009-01-04 0.810543 1.460448 0.184355 1.285660 18.279316 40.193218\n", - "2009-01-05 0.527455 0.925445 0.152025 0.797311 15.578760 38.100803\n", - "... ... ... ... ... ... ...\n", - "2009-04-06 7.866113 18.959234 6.432921 8.279245 53.550659 94.774048\n", - "2009-04-07 7.445977 20.309471 5.375726 8.953537 69.562012 103.555908\n", - "2009-04-08 6.495067 18.573339 4.400487 8.361993 82.610237 109.817581\n", - "2009-04-09 7.903990 20.301352 6.889159 9.348463 95.347885 125.540184\n", - "2009-04-10 8.605656 21.092295 6.161833 9.444534 103.210861 140.248596\n", - "\n", - "[100 rows x 6 columns]\n", - "2022-03-19 23:56:56.228 | DEBUG | catchment:ListAttributes:1485 - Qtot : array([[[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " ...,\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],\n", - "\n", - " [[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " ...,\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],\n", - "\n", - " [[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " ...,\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],\n", - "\n", - " ...,\n", - "\n", - " [[4.74056929e-01, 2.46969044e-01, 8.88363346e-02, ...,\n", - " 4.37286615e+00, 2.68815064e+00, 0.00000000e+00],\n", - " [2.37028456e+00, 2.07438564e+00, 1.29365373e+00, ...,\n", - " 1.50085831e+01, 1.63515816e+01, 8.35635853e+00],\n", - " [1.42217076e+00, 1.18357384e+00, 7.69919217e-01, ...,\n", - " 9.67619896e+00, 9.16165733e+00, 4.55875015e+00],\n", - " ...,\n", - " [2.93761368e+01, 3.05775604e+01, 2.97358780e+01, ...,\n", - " 9.75536194e+01, 1.11385307e+02, 8.63508987e+01],\n", - " [4.56657469e-01, 3.02252680e-01, 8.46222714e-02, ...,\n", - " 6.61646748e+00, 2.60082245e+00, 0.00000000e+00],\n", - " [4.08987656e+01, 4.28586388e+01, 4.21511307e+01, ...,\n", - " 1.25540184e+02, 1.40248596e+02, 1.05040260e+02]],\n", - "\n", - " [[4.74056929e-01, 2.46969044e-01, 8.88363346e-02, ...,\n", - " 4.37286615e+00, 2.68815064e+00, 0.00000000e+00],\n", - " [9.48113859e-01, 6.92374885e-01, 3.50703537e-01, ...,\n", - " 7.03905821e+00, 6.28311300e+00, 1.89880431e+00],\n", - " [9.48113859e-01, 6.92374885e-01, 3.50703537e-01, ...,\n", - " 7.03905821e+00, 6.28311300e+00, 1.89880431e+00],\n", - " ...,\n", - " [4.74056929e-01, 2.46967852e-01, 8.88450071e-02, ...,\n", - " 6.23447227e+00, 2.77513909e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],\n", - "\n", - " [[0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [4.74056929e-01, 2.46969044e-01, 8.88363346e-02, ...,\n", - " 4.37286615e+00, 2.68815064e+00, 0.00000000e+00],\n", - " [4.74056929e-01, 2.46969044e-01, 8.88363346e-02, ...,\n", - " 4.37286615e+00, 2.68815064e+00, 0.00000000e+00],\n", - " ...,\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [0.00000000e+00, 0.00000000e+00, 0.00000000e+00, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]], dtype=float32)\n", - "2022-03-19 23:56:56.228 | DEBUG | catchment:ListAttributes:1485 - RiverRoughness : None\n", - "2022-03-19 23:56:56.228 | DEBUG | catchment:ListAttributes:1485 - RiverWidth : None\n", - "2022-03-19 23:56:56.228 | DEBUG | catchment:ListAttributes:1485 - RouteRiver : 'Muskingum'\n", - "2022-03-19 23:56:56.228 | DEBUG | catchment:ListAttributes:1485 - Snow : 0\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - SpatialResolution : 'distributed'\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - TS : 101\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - Temp : array([[[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " ...,\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", - "\n", - " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " ...,\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", - "\n", - " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " ...,\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", - "\n", - " ...,\n", - "\n", - " [[ 2.84896870e+01, 2.85865803e+01, 2.91636639e+01, ...,\n", - " 2.72752037e+01, 2.72234440e+01, 2.90380611e+01],\n", - " [ 2.84896870e+01, 2.85865803e+01, 2.91636639e+01, ...,\n", - " 2.72752037e+01, 2.72234440e+01, 2.90380611e+01],\n", - " [ 2.84896870e+01, 2.85865803e+01, 2.91636639e+01, ...,\n", - " 2.72752037e+01, 2.72234440e+01, 2.90380611e+01],\n", - " ...,\n", - " [ 2.83492470e+01, 2.82137051e+01, 2.92850571e+01, ...,\n", - " 2.73552589e+01, 2.68131657e+01, 2.85098381e+01],\n", - " [ 2.83492470e+01, 2.82137051e+01, 2.92850571e+01, ...,\n", - " 2.73552589e+01, 2.68131657e+01, 2.85098381e+01],\n", - " [ 2.83034916e+01, 2.81027336e+01, 2.92750492e+01, ...,\n", - " 2.73133678e+01, 2.67461548e+01, 2.83543530e+01]],\n", - "\n", - " [[ 2.84896870e+01, 2.85865803e+01, 2.91636639e+01, ...,\n", - " 2.72752037e+01, 2.72234440e+01, 2.90380611e+01],\n", - " [ 2.84896870e+01, 2.85865803e+01, 2.91636639e+01, ...,\n", - " 2.72752037e+01, 2.72234440e+01, 2.90380611e+01],\n", - " [ 2.84896870e+01, 2.85865803e+01, 2.91636639e+01, ...,\n", - " 2.72752037e+01, 2.72234440e+01, 2.90380611e+01],\n", - " ...,\n", - " [ 2.83492470e+01, 2.82137051e+01, 2.92850571e+01, ...,\n", - " 2.73552589e+01, 2.68131657e+01, 2.85098381e+01],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]],\n", - "\n", - " [[-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [ 2.84896870e+01, 2.85865803e+01, 2.91636639e+01, ...,\n", - " 2.72752037e+01, 2.72234440e+01, 2.90380611e+01],\n", - " [ 2.84896870e+01, 2.85865803e+01, 2.91636639e+01, ...,\n", - " 2.72752037e+01, 2.72234440e+01, 2.90380611e+01],\n", - " ...,\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38],\n", - " [-3.40282306e+38, -3.40282306e+38, -3.40282306e+38, ...,\n", - " -3.40282306e+38, -3.40282306e+38, -3.40282306e+38]]])\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - TemporalResolution : 'daily'\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - UB : None\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - acc_val : [0, 1, 2, 3, 4, 5, 6, 10, 11, 13, 15, 16, 17, 23, 43, 44, 48, 55, 59, 63, 86, 88]\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - anim : None\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - cols : 14\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - conversionfactor : 86.4\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - data : None\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - dt : 1\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - end : datetime.datetime(2009, 4, 10, 0, 0)\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - ll_temp : array([[[-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " ...,\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38]],\n", - "\n", - " [[-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " ...,\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38]],\n", - "\n", - " [[-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " ...,\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38]],\n", - "\n", - " ...,\n", - "\n", - " [[ 2.8653997e+01, 2.8653997e+01, 2.8653997e+01, ...,\n", - " 2.8653997e+01, 2.8653997e+01, 2.8653997e+01],\n", - " [ 2.8653997e+01, 2.8653997e+01, 2.8653997e+01, ...,\n", - " 2.8653997e+01, 2.8653997e+01, 2.8653997e+01],\n", - " [ 2.8653997e+01, 2.8653997e+01, 2.8653997e+01, ...,\n", - " 2.8653997e+01, 2.8653997e+01, 2.8653997e+01],\n", - " ...,\n", - " [ 2.8671383e+01, 2.8671383e+01, 2.8671383e+01, ...,\n", - " 2.8671383e+01, 2.8671383e+01, 2.8671383e+01],\n", - " [ 2.8671383e+01, 2.8671383e+01, 2.8671383e+01, ...,\n", - " 2.8671383e+01, 2.8671383e+01, 2.8671383e+01],\n", - " [ 2.8630550e+01, 2.8630550e+01, 2.8630550e+01, ...,\n", - " 2.8630550e+01, 2.8630550e+01, 2.8630550e+01]],\n", - "\n", - " [[ 2.8653997e+01, 2.8653997e+01, 2.8653997e+01, ...,\n", - " 2.8653997e+01, 2.8653997e+01, 2.8653997e+01],\n", - " [ 2.8653997e+01, 2.8653997e+01, 2.8653997e+01, ...,\n", - " 2.8653997e+01, 2.8653997e+01, 2.8653997e+01],\n", - " [ 2.8653997e+01, 2.8653997e+01, 2.8653997e+01, ...,\n", - " 2.8653997e+01, 2.8653997e+01, 2.8653997e+01],\n", - " ...,\n", - " [ 2.8671383e+01, 2.8671383e+01, 2.8671383e+01, ...,\n", - " 2.8671383e+01, 2.8671383e+01, 2.8671383e+01],\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38]],\n", - "\n", - " [[-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " [ 2.8653997e+01, 2.8653997e+01, 2.8653997e+01, ...,\n", - " 2.8653997e+01, 2.8653997e+01, 2.8653997e+01],\n", - " [ 2.8653997e+01, 2.8653997e+01, 2.8653997e+01, ...,\n", - " 2.8653997e+01, 2.8653997e+01, 2.8653997e+01],\n", - " ...,\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38],\n", - " [-3.4028231e+38, -3.4028231e+38, -3.4028231e+38, ...,\n", - " -3.4028231e+38, -3.4028231e+38, -3.4028231e+38]]], dtype=float32)\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - no_elem : 89\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - px_area : 16.0\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - px_tot_area : 1424.0\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - q_init : None\n", - "2022-03-19 23:56:56.244 | DEBUG | catchment:ListAttributes:1485 - qlz : array([[[0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " ...,\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]],\n", - "\n", - " [[0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " ...,\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]],\n", - "\n", - " [[0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " ...,\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]],\n", - "\n", - " ...,\n", - "\n", - " [[0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", - " 0.49174854, 0. ],\n", - " [0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", - " 0.49174854, 0. ],\n", - " [0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", - " 0.49174854, 0. ],\n", - " ...,\n", - " [0.05067997, 0.08155993, 0.08884501, ..., 0.4827707 ,\n", - " 0.48905724, 0. ],\n", - " [0.04988309, 0.07146442, 0.08462227, ..., 0.35991618,\n", - " 0.36345086, 0. ],\n", - " [0.04988309, 0.07146442, 0.08462227, ..., 0.35944986,\n", - " 0.3630079 , 0. ]],\n", - "\n", - " [[0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", - " 0.49174854, 0. ],\n", - " [0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", - " 0.49174854, 0. ],\n", - " [0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", - " 0.49174854, 0. ],\n", - " ...,\n", - " [0.05067997, 0.08155993, 0.08884501, ..., 0.4827707 ,\n", - " 0.48905724, 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]],\n", - "\n", - " [[0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", - " 0.49174854, 0. ],\n", - " [0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", - " 0.49174854, 0. ],\n", - " ...,\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]]], dtype=float32)\n", - "2022-03-19 23:56:56.260 | DEBUG | catchment:ListAttributes:1485 - qlz_translated : array([[[ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]],\n", - "\n", - " ...,\n", - "\n", - " [[ 0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", - " 0.49174854, 0. ],\n", - " [ 0.25339985, 0.40779966, 0.44418168, ..., 2.4280324 ,\n", - " 2.4587426 , 0. ],\n", - " [ 0.15203992, 0.24467981, 0.266509 , ..., 1.4568195 ,\n", - " 1.4752456 , 0. ],\n", - " ...,\n", - " [ 2.4726863 , 4.1705813 , 4.462921 , ..., 32.567966 ,\n", - " 33.009247 , 0. ],\n", - " [ 0.04988309, 0.07146442, 0.08462227, ..., 0.35991618,\n", - " 0.36345086, 0. ],\n", - " [ 3.3864908 , 5.6943026 , 6.1069126 , ..., 44.61512 ,\n", - " 45.232674 , 0. ]],\n", - "\n", - " [[ 0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", - " 0.49174854, 0. ],\n", - " [ 0.10135994, 0.16311987, 0.17767267, ..., 0.971213 ,\n", - " 0.9834971 , 0. ],\n", - " [ 0.10135994, 0.16311987, 0.17767267, ..., 0.971213 ,\n", - " 0.9834971 , 0. ],\n", - " ...,\n", - " [ 0.05067997, 0.08155993, 0.08884501, ..., 0.4827707 ,\n", - " 0.48905724, 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", - " 0.49174854, 0. ],\n", - " [ 0.05067997, 0.08155993, 0.08883633, ..., 0.4856065 ,\n", - " 0.49174854, 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]]], dtype=float32)\n", - "2022-03-19 23:56:56.260 | DEBUG | catchment:ListAttributes:1485 - qout : array([ 40.898766 , 42.85864 , 42.15113 , 40.19322 , 38.100803 ,\n", - " 35.758636 , 33.73754 , 30.630371 , 27.391954 , 23.816029 ,\n", - " 20.414543 , 18.291088 , 16.189606 , 14.184235 , 11.959721 ,\n", - " 10.271119 , 9.040911 , 9.115901 , 8.954173 , 9.7257805,\n", - " 9.492704 , 9.077841 , 9.901954 , 9.674218 , 10.634078 ,\n", - " 13.200643 , 16.444237 , 18.678535 , 21.044052 , 21.090816 ,\n", - " 20.970753 , 21.27523 , 22.27513 , 21.72365 , 20.95892 ,\n", - " 20.12223 , 21.492516 , 23.169922 , 23.946625 , 23.315025 ,\n", - " 24.145033 , 27.559956 , 33.74961 , 41.527096 , 47.869907 ,\n", - " 51.519356 , 55.979744 , 60.126442 , 63.59916 , 66.857056 ,\n", - " 69.11042 , 73.32504 , 77.7796 , 81.23607 , 85.51257 ,\n", - " 89.727 , 92.92263 , 95.096855 , 95.61752 , 94.608574 ,\n", - " 93.20772 , 93.16734 , 92.77138 , 92.19656 , 94.929016 ,\n", - " 97.35497 , 98.34743 , 97.09517 , 95.99574 , 93.6085 ,\n", - " 93.23897 , 91.823456 , 91.66304 , 89.38716 , 88.857765 ,\n", - " 86.88518 , 82.08201 , 81.60626 , 86.12597 , 92.95073 ,\n", - " 99.01169 , 104.29736 , 109.84674 , 115.185486 , 118.47419 ,\n", - " 122.07793 , 121.75287 , 117.706985 , 110.52746 , 101.827156 ,\n", - " 92.64522 , 81.34973 , 76.95682 , 74.75282 , 85.21558 ,\n", - " 94.77405 , 103.55591 , 109.81758 , 125.540184 , 140.2486 ,\n", - " 105.04026 ], dtype=float32)\n", - "2022-03-19 23:56:56.260 | DEBUG | catchment:ListAttributes:1485 - quz : array([[[0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " ...,\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]],\n", - "\n", - " [[0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " ...,\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]],\n", - "\n", - " [[0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " ...,\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]],\n", - "\n", - " ...,\n", - "\n", - " [[0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", - " 2.196402 , 0. ],\n", - " [0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", - " 2.196402 , 0. ],\n", - " [0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", - " 2.196402 , 0. ],\n", - " ...,\n", - " [0.42337695, 0.16540791, 0. , ..., 5.7517014 ,\n", - " 2.2860818 , 0. ],\n", - " [0.40677437, 0.23078826, 0. , ..., 6.2565513 ,\n", - " 2.2373717 , 0. ],\n", - " [0.40677437, 0.23078826, 0. , ..., 6.2277727 ,\n", - " 2.2354305 , 0. ]],\n", - "\n", - " [[0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", - " 2.196402 , 0. ],\n", - " [0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", - " 2.196402 , 0. ],\n", - " [0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", - " 2.196402 , 0. ],\n", - " ...,\n", - " [0.42337695, 0.16540791, 0. , ..., 5.7517014 ,\n", - " 2.2860818 , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]],\n", - "\n", - " [[0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", - " 2.196402 , 0. ],\n", - " [0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", - " 2.196402 , 0. ],\n", - " ...,\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]]], dtype=float32)\n", - "2022-03-19 23:56:56.260 | DEBUG | catchment:ListAttributes:1485 - quz_routed : array([[[ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]],\n", - "\n", - " ...,\n", - "\n", - " [[ 0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", - " 2.196402 , 0. ],\n", - " [ 2.1168847 , 1.6665859 , 0.849472 , ..., 12.580551 ,\n", - " 13.892839 , 8.356359 ],\n", - " [ 1.2701309 , 0.93889403, 0.5034102 , ..., 8.219379 ,\n", - " 7.686412 , 4.55875 ],\n", - " ...,\n", - " [ 26.90345 , 26.406979 , 25.272957 , ..., 64.98565 ,\n", - " 78.37606 , 86.3509 ],\n", - " [ 0.40677437, 0.23078826, 0. , ..., 6.2565513 ,\n", - " 2.2373717 , 0. ],\n", - " [ 37.512276 , 37.164337 , 36.04422 , ..., 80.925064 ,\n", - " 95.015915 , 105.04026 ]],\n", - "\n", - " [[ 0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", - " 2.196402 , 0. ],\n", - " [ 0.8467539 , 0.52925503, 0.17303088, ..., 6.0678453 ,\n", - " 5.299616 , 1.8988043 ],\n", - " [ 0.8467539 , 0.52925503, 0.17303088, ..., 6.0678453 ,\n", - " 5.299616 , 1.8988043 ],\n", - " ...,\n", - " [ 0.42337695, 0.16540791, 0. , ..., 5.7517014 ,\n", - " 2.2860818 , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", - " 2.196402 , 0. ],\n", - " [ 0.42337695, 0.1654091 , 0. , ..., 3.8872597 ,\n", - " 2.196402 , 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ],\n", - " [ 0. , 0. , 0. , ..., 0. ,\n", - " 0. , 0. ]]], dtype=float32)\n", - "2022-03-19 23:56:56.260 | DEBUG | catchment:ListAttributes:1485 - rows : 13\n", - "2022-03-19 23:56:56.260 | DEBUG | catchment:ListAttributes:1485 - start : datetime.datetime(2009, 1, 1, 0, 0)\n", - "2022-03-19 23:56:56.276 | DEBUG | catchment:ListAttributes:1485 - statevariables : array([[[[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " ...,\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]]],\n", - "\n", - "\n", - " [[[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " ...,\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]]],\n", - "\n", - "\n", - " [[[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " ...,\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]]],\n", - "\n", - "\n", - " ...,\n", - "\n", - "\n", - " [[[ 0. , 5. , 5. , 5. ,\n", - " 0. ],\n", - " [ 0. , 5.100931 , 1.1221229, 7.636654 ,\n", - " 0. ],\n", - " [ 0. , 51.103764 , 0. , 8.317961 ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 307.2126 , 26.37088 , 45.46851 ,\n", - " 0. ],\n", - " [ 0. , 305.13776 , 14.900228 , 46.043602 ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 5. , 5. , 5. ,\n", - " 0. ],\n", - " [ 0. , 5.100931 , 1.1221229, 7.636654 ,\n", - " 0. ],\n", - " [ 0. , 51.103764 , 0. , 8.317961 ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 307.2126 , 26.37088 , 45.46851 ,\n", - " 0. ],\n", - " [ 0. , 305.13776 , 14.900228 , 46.043602 ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 5. , 5. , 5. ,\n", - " 0. ],\n", - " [ 0. , 5.100931 , 1.1221229, 7.636654 ,\n", - " 0. ],\n", - " [ 0. , 51.103764 , 0. , 8.317961 ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 307.2126 , 26.37088 , 45.46851 ,\n", - " 0. ],\n", - " [ 0. , 305.13776 , 14.900228 , 46.043602 ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " ...,\n", - "\n", - " [[ 0. , 5. , 5. , 5. ,\n", - " 0. ],\n", - " [ 0. , 4.9873815, 1.1221149, 7.636654 ,\n", - " 0. ],\n", - " [ 0. , 60.658325 , 0. , 8.318772 ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 311.54718 , 29.21958 , 45.20299 ,\n", - " 0. ],\n", - " [ 0. , 310.17596 , 15.508608 , 45.79161 ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 5. , 5. , 5. ,\n", - " 0. ],\n", - " [ 0. , 4.98834 , 1.6768945, 6.804019 ,\n", - " 0. ],\n", - " [ 0. , 60.6685 , 0. , 8.056759 ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 372.78818 , 28.846308 , 34.267075 ,\n", - " 0. ],\n", - " [ 0. , 371.42386 , 16.256618 , 34.603603 ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 5. , 5. , 5. ,\n", - " 0. ],\n", - " [ 0. , 4.989619 , 1.6768945, 6.804019 ,\n", - " 0. ],\n", - " [ 0. , 60.669113 , 0. , 8.056759 ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 372.6207 , 28.823357 , 34.22268 ,\n", - " 0. ],\n", - " [ 0. , 371.4571 , 16.242514 , 34.561436 ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]]],\n", - "\n", - "\n", - " [[[ 0. , 5. , 5. , 5. ,\n", - " 0. ],\n", - " [ 0. , 5.100931 , 1.1221229, 7.636654 ,\n", - " 0. ],\n", - " [ 0. , 51.103764 , 0. , 8.317961 ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 307.2126 , 26.37088 , 45.46851 ,\n", - " 0. ],\n", - " [ 0. , 305.13776 , 14.900228 , 46.043602 ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 5. , 5. , 5. ,\n", - " 0. ],\n", - " [ 0. , 5.100931 , 1.1221229, 7.636654 ,\n", - " 0. ],\n", - " [ 0. , 51.103764 , 0. , 8.317961 ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 307.2126 , 26.37088 , 45.46851 ,\n", - " 0. ],\n", - " [ 0. , 305.13776 , 14.900228 , 46.043602 ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 5. , 5. , 5. ,\n", - " 0. ],\n", - " [ 0. , 5.100931 , 1.1221229, 7.636654 ,\n", - " 0. ],\n", - " [ 0. , 51.103764 , 0. , 8.317961 ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 307.2126 , 26.37088 , 45.46851 ,\n", - " 0. ],\n", - " [ 0. , 305.13776 , 14.900228 , 46.043602 ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " ...,\n", - "\n", - " [[ 0. , 5. , 5. , 5. ,\n", - " 0. ],\n", - " [ 0. , 4.9873815, 1.1221149, 7.636654 ,\n", - " 0. ],\n", - " [ 0. , 60.658325 , 0. , 8.318772 ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 311.54718 , 29.21958 , 45.20299 ,\n", - " 0. ],\n", - " [ 0. , 310.17596 , 15.508608 , 45.79161 ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]]],\n", - "\n", - "\n", - " [[[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 5. , 5. , 5. ,\n", - " 0. ],\n", - " [ 0. , 5.100931 , 1.1221229, 7.636654 ,\n", - " 0. ],\n", - " [ 0. , 51.103764 , 0. , 8.317961 ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 307.2126 , 26.37088 , 45.46851 ,\n", - " 0. ],\n", - " [ 0. , 305.13776 , 14.900228 , 46.043602 ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 5. , 5. , 5. ,\n", - " 0. ],\n", - " [ 0. , 5.100931 , 1.1221229, 7.636654 ,\n", - " 0. ],\n", - " [ 0. , 51.103764 , 0. , 8.317961 ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 307.2126 , 26.37088 , 45.46851 ,\n", - " 0. ],\n", - " [ 0. , 305.13776 , 14.900228 , 46.043602 ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " ...,\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]],\n", - "\n", - " [[ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " ...,\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ],\n", - " [ 0. , 0. , 0. , 0. ,\n", - " 0. ]]]], dtype=float32)\n", - "2022-03-19 23:56:56.276 | DEBUG | catchment:ListAttributes:1487 - \n", - "\n" - ] - } - ], - "source": [ - "Coello.ListAttributes()" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "cf03d1c9-6f6a-4cb0-b5f4-fd02997bc941", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": "[]" - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "text/plain": "
", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "\n", - "plt.plot(Coello.Qtot[12, 1, :])" - ] - }, - { - "cell_type": "markdown", - "id": "efeccdb2", - "metadata": {}, - "source": [ - "### Animation" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "c2f2d994", - "metadata": {}, - "outputs": [ - { - "ename": "RuntimeError", - "evalue": "Requested MovieWriter (ffmpeg) not available", - "output_type": "error", - "traceback": [ - "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[1;31mRuntimeError\u001B[0m Traceback (most recent call last)", - "Input \u001B[1;32mIn [20]\u001B[0m, in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[0;32m 8\u001B[0m threshold \u001B[38;5;241m=\u001B[39m \u001B[38;5;241m10\u001B[39m\n\u001B[0;32m 10\u001B[0m Anim \u001B[38;5;241m=\u001B[39m Coello\u001B[38;5;241m.\u001B[39mPlotDistributedResults(plotstart, plotend, Figsize\u001B[38;5;241m=\u001B[39m(\u001B[38;5;241m9\u001B[39m, \u001B[38;5;241m9\u001B[39m), Option\u001B[38;5;241m=\u001B[39mOption, threshold\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m160\u001B[39m,\n\u001B[0;32m 11\u001B[0m PlotNumbers\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mFalse\u001B[39;00m,\n\u001B[0;32m 12\u001B[0m TicksSpacing\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m5\u001B[39m, Interval\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m200\u001B[39m, Gauges\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mTrue\u001B[39;00m, cmap\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124minferno\u001B[39m\u001B[38;5;124m'\u001B[39m, Textloc\u001B[38;5;241m=\u001B[39m[\u001B[38;5;241m0.1\u001B[39m, \u001B[38;5;241m0.2\u001B[39m],\n\u001B[0;32m 13\u001B[0m Gaugecolor\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mred\u001B[39m\u001B[38;5;124m'\u001B[39m, ColorScale\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m2\u001B[39m, IDcolor\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mblue\u001B[39m\u001B[38;5;124m'\u001B[39m, IDsize\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m25\u001B[39m)\n\u001B[1;32m---> 14\u001B[0m HTML(\u001B[43mAnim\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mto_html5_video\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m)\n", - "File \u001B[1;32m~\\anaconda\\lib\\site-packages\\matplotlib\\animation.py:1266\u001B[0m, in \u001B[0;36mAnimation.to_html5_video\u001B[1;34m(self, embed_limit)\u001B[0m\n\u001B[0;32m 1263\u001B[0m path \u001B[38;5;241m=\u001B[39m Path(tmpdir, \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mtemp.m4v\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[0;32m 1264\u001B[0m \u001B[38;5;66;03m# We create a writer manually so that we can get the\u001B[39;00m\n\u001B[0;32m 1265\u001B[0m \u001B[38;5;66;03m# appropriate size for the tag\u001B[39;00m\n\u001B[1;32m-> 1266\u001B[0m Writer \u001B[38;5;241m=\u001B[39m \u001B[43mwriters\u001B[49m\u001B[43m[\u001B[49m\u001B[43mmpl\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mrcParams\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[38;5;124;43manimation.writer\u001B[39;49m\u001B[38;5;124;43m'\u001B[39;49m\u001B[43m]\u001B[49m\u001B[43m]\u001B[49m\n\u001B[0;32m 1267\u001B[0m writer \u001B[38;5;241m=\u001B[39m Writer(codec\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mh264\u001B[39m\u001B[38;5;124m'\u001B[39m,\n\u001B[0;32m 1268\u001B[0m bitrate\u001B[38;5;241m=\u001B[39mmpl\u001B[38;5;241m.\u001B[39mrcParams[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124manimation.bitrate\u001B[39m\u001B[38;5;124m'\u001B[39m],\n\u001B[0;32m 1269\u001B[0m fps\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m1000.\u001B[39m \u001B[38;5;241m/\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_interval)\n\u001B[0;32m 1270\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39msave(\u001B[38;5;28mstr\u001B[39m(path), writer\u001B[38;5;241m=\u001B[39mwriter)\n", - "File \u001B[1;32m~\\anaconda\\lib\\site-packages\\matplotlib\\animation.py:151\u001B[0m, in \u001B[0;36mMovieWriterRegistry.__getitem__\u001B[1;34m(self, name)\u001B[0m\n\u001B[0;32m 149\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mis_available(name):\n\u001B[0;32m 150\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_registered[name]\n\u001B[1;32m--> 151\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mRuntimeError\u001B[39;00m(\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mRequested MovieWriter (\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mname\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m) not available\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n", - "\u001B[1;31mRuntimeError\u001B[0m: Requested MovieWriter (ffmpeg) not available" - ] - }, - { - "data": { - "text/plain": "
", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmIAAAH4CAYAAADpQ4FeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABRVklEQVR4nO3de3yU5Z3//9cngQABIiiKqWhVxCOloNRC7VIVD9j1ULvbag9KW7fa7xa31kNFS6utX1xXAan1p5VWv2Jtq26tlbWKQliLpYGCoohYq4gHEEHQhHAISWY+vz/mTpiEyQEy9yGT97OP+5GZ+zDzziSkH6/ruq/L3B0RERERiV5R3AFEREREuisVYiIiIiIxUSEmIiIiEhMVYiIiIiIxUSEmIiIiEhMVYiIiIiIxUSEmkmdm9g0ze97MaszsIzNbbmYz9uJ13jKzaVnP7zezZe1cc6OZuZm93srxN4LjN+5hlm8E1/Xr4PlHBlkG7Mn7iIh0NyrERPLIzK4DfgU8DXwRuBh4HDh3L17ufOCOvbiuFjjMzEa3yPYp4OPB8T31J2AssL2D5x8J3AAM2Iv3EhHpNnrEHUCkwEwC7nH367P2/Y+Z/WRPX8jdl+9lhm3AC8CFQHYL2oXAAuCEvcjyAfDBXubpNDPr4+474np/EZGwqEVMJL8GAO+33OktlrAws0FmNtvMNpvZdjN7NkcLVrOuyT30EPBlM7PgtQz4crB/N2b2ZTN72cx2mtm7ZjbVzHpkHd+ta9LMrgu6OmvNbIOZzTWzA83sZOB/gtPWBNe9FVxzo5ltyvH+bmaTWnzv083sR2a2FtgS7C8ys8nB++40s3+Y2cS9/IxERGKnQkwkv14ALjeziWa2Xxvn/RE4E7gauIDMv8X/NbMj8pTjD8Bg4LPB838C9gcea3mimZ0BPBxkPw/4eZDrztZe3MwuBq4HZgTfx/8B3gD6Bq9zdXDqF8l0aZ6/F9/DV4HPAf9O5jMiyDYFmAX8c/D93GdmZ+/F64uIxE5dkyL59V0yRdb9gJvZq8CjwDR3b2zVmQCcBJzs7n8O9i0A3gKuAS7rbAh3rzKzuWS6I58Lvs4N9rc8/afAs+7e2LI0NzjnP83s/7r72hxvcSLwjLvflbXvD40PzOy14OFyd3+rE9/K2e5eG7zmEWQKvm+6++zg+HwzKyczHu2JTryPiEgs1CImkkfuvgI4hszg/LsAA34ELMvq1jsR+KCxCAuu20amkPgs+fMQ8K9m1gv4V3J0S5pZMXA88N8tDj1M5u/D2FZe+0Xg82b2EzM7MXidfKtoLMIC44E08JiZ9WjcgApgZEgZRERCpUJMJM/cfae7/4+7T3L3Y4F/A4YBlwSnlAMbcly6Adg3j1HmAP2AqWS6DP8nxzmDgJ458jQ+by3PfWS6Jr8MLAE2mNlNeS6GWmYaBBQD1UB91nY/mdb98jy+t4hIJNQ1KRIyd7/XzG4Fjg52rQcOyHHqYODDPL7vNjN7Avg+8N9Bq1tLm8gUMy3zDA6+5szj7mngduB2MzsY+BqZgm8d8Is2YtUCJdk7zGxga99Ci+cfAg1kunXTOc7f2Mb7iogkklrERPLIzHYrsMxsf2AfdrXwLAEOMLNxWeeUkhl8/pc8R7qbTEtYzuLI3VPA88CXWhz6Mplip7K9N3D3d939FjKD9Y8NdtcFX3u3OH0t0N/MDsrad0Z77xFYQKZFbB93X5Zjq2vvBUREkkYtYiL59bKZPQ48Q6aF5uNk7iDcDswGcPenzWwR8LCZTQY2B+f0AW7LZxh3fxZ4tp3TbgCeNrP/R2Yc2SeAm4BftjJQHzO7h0wL1WIyXYWnkOl+vTY4pXGw/mVm9hCw3d1fBuYCO8jc6TgdOAz4Tge/l9fM7BfAQ0EL4zIyhd5xwJHu/m8deR0RkSRRISaSXz8lMwXEHWTGV70P/BW4wN3XZJ13PjAdmEmmmPgbcKq7vxFpWsDdnzGzC8lMC/E1MgXkdDIFWmsqgW+TucOzN5nWsG+7+x+D13zbzK4G/gO4nExL2KHuvsnM/gWYRubu0ufJTFOxqoNxvwv8I3jvn5KZX2wVcG8HrxcRSRRrMc+kiIiIiEREY8REREREYqKuSREREQndmRNG+OZNW0N7/eefX/O0u08I7Q1CokJMREREQrd501aWLLsptNfvYV8fFNqLh0hdkyIiIhI6x0mnU6Ft7TGz+8xso5mtzNp3o5mtM7MXg+3zWceuM7M3zOw1MzszpI9FhZiIiIh0C/cDuboub3f3kcH2JICZHUtmjd7jgmvuCmsZtT3qmjQz3WIpIiLShbm7xfTOuDfE89aAuy80s0M7ePp5wEPuvhNYY2ZvkFknuN1JrvfUXowR07q6IiIiXVP7XXjd0CQzu5jMJNFXuftHwEFkJqxutDbYl3fqmhQREZHwObinQtuAQWa2LGu7tAOp7gaGAiPJrAM8Pdifq9UwlF5B3TUpIiIioXOcdLhdk5vcffSeXODujWsAY2a/BJ4Inq4FDs46dQjwXqcT5qAWMREREemWzKw86+n5QOMdlXOAC82sl5kdRmYt3b+FkUEtYiIiIhKBeAfrm9nvgJPJdGGuJbOe7slmNpJMt+NbZNbPxd1fMbNHyKxl2wB814P+z3xTi5iIiIh0BzvI3HH4mrsPcfd73f0id/8E8ABwDlAPENxdOQWoCa47L6xQahETERGRCMTbIkZmHrE7yRRdTczsYOB04J0W569295Fhh1KLmIiIiBQ8d18IfJjj0O3ADwjprsj2qEVMREREwueOp0NtERtkZsuyns9y91ltXWBm5wLr3P0ls91mrDjMzJYDW4Ap7v5cfuNmqBATERGRQrBH01eYWSnwQ+CMHIfXA4e4+2YzOwH4o5kd5+5b8pS1iQoxERERiUa8Y8RaGgocBjS2hg0BXjCzE939fWAngLs/b2argSPJzL6fVyrEREREpNtx95eBAxqfm9lbwGh332Rm+wMfunvKzA4nM4/Ym2HkCH2w/owZ01m48FlmzpzRbH95eTkVFfNYtOg5xo8fH3aMxGVJWp4kZVGerpMlaXmSlEV5uk6WpOVJUpb8ytw1GdbWnmAesUrgKDNba2aXtHH6OGCFmb0E/B74jrvnGujfaaEWYqNGjaJv31LGjTuZkpISRo/e1XU7efIPmDLlx5xxxgSmTLk+zBiJy5K0PEnKojxdJ0vS8iQpi/J0nSxJy5OkLPnnkK4Pb2vfbvOINR4ws6uBjzcldX8UeBDoG2x1ef0osoRaiI0dO4b58ysAmD+/gjFjPt10bMSIEVRWVrJt2zZqamro169fmFESlSVpeZKURXm6Tpak5UlSFuXpOlmSlidJWQrQ/cCEljtzzSNmZscCFwLHBdfcZWbFYYQKtRAbMGAAW7bUAFBdvYWBAwc2HSsu3vX9VFdXNztW6FmSlidJWZSn62RJWp4kZVGerpMlaXmSlCXf3OPtmtzDecTOAx5y953uvgZ4AzgxDx/DbkItxKqqqigr6w9AWVl/qqqqmo6lUruWbCorK2t2rNCzJC1PkrIoT9fJkrQ8ScqiPF0nS9LyJClLFzTIzJZlbZe2d0H2PGItDh0EvJv1fG2wL+9CLcQqKxczfvypAJx22ngWL17SdGzFihWMGTOG0tJSysrKqKmpCTNKorIkLU+SsihP18mStDxJyqI8XSdL0vIkKUv+OaQbwtuCecSytvYmc22cR+zHuQ7n/gbyL9RCbPny5dTW1rJw4bOk02mWLl3KHXfMBODWW6cxdepNzJ//DDfffEuYMRKXJWl5kpRFebpOlqTlSVIW5ek6WZKWJ0lZuoHsecTeYtc8YgeSaQE7OOvcIcB7YYQw944XeGbmmRsOREREpOtJ4e65WntCN2rkYP/zgq+F9vr77Hf78+3NrG9mhwJPuPvwHMfeYtc8YscBvyUzLuxjQAUwzN1TLa/rLC36LSIiIgVvT+YRc/dXgEeAVcBc4LthFGGgmfVFREQkKvEucZQ9j9hwADO7icwdkmngH0BJsP9QYArwWnDtecBTYYRSi5iIiIh0B/ez+zxit7n7CHcfCTxB84H7q919ZLB9J6xQahETERGR0BmOpeNrEXP3hUFLV/a+LVlP+xLSnZFtUSEmIiIi4XNvnGYiLIPMbFnW81ntTWEBYGZTgYuBauCUrEOHmdlyYAswxd2fy2vagAoxERERKQSb2rtrMhd3/yHwQzO7DpgE3ACsBw5x981mdgLwRzM7rkULWl5ojJiIiIhEIPQJXTvrt8C/AARLG20OHj8PrAaOzMebtKRCTERERLolMxuW9fRc4O/B/v0bF/k2s8OBYcCbYWRQ16SIiIhEwLEYp68I5hE7mcxYsrVkuiA/b2ZHkZm+4m2g8e7IccBPzawBSAHfcfdcC4Z3mgoxERER6Q5yzSN2KJnWrjTQi+CuSXd/1MyOBC4hU4jVhRVKXZMiIiISPgfSqfC29t1PB+cRM7NjgQuB44Jr7mrsqsw3FWIiIiJS8Nx9IfBhi32tzSN2HvBQMGh/DfAGmXUn805dkyIiIhKBeCd0bU0r84gdBCzOOm1tsC/v1CImIiIihWCQmS3L2i7tyEXu/kN3Pxj4DZl5xAAs16n5CppNLWLS7YztMzHuCNJBlTtmxx1BRPLGOzqWa2/t1YSuWX4L/InM3ZRrgYOzjg0B3uvEa7dKLWIiIiISPk/ehK6tzSMGzAEuNLNeZnYYmTsr/9ap778VahETERGRgrcn84i5+ytm9giwCmgAvuvuoTTnqRATERGRSFi4XZNtcvev5Nh9bxvnTwWmhpcoQ12TIiIiUvDM7D4z22hmK7P23WZmfzezFWb2mJkNCPYfamY7zOzFYPtFWLlUiImIiEj43JM4oes8YLi7jwD+AVyXdWy1u48Mtu8QEhViIiIiUvBamdD1GfemBTAXk7k7MlIaIyYiIiKRCHmM2CAzW5b1fJa7z9qD678FPJz1/DAzWw5sAaa4+3P5CNmSCjEREREpBHs9j5iZ/ZDM3ZG/CXatBw5x981mdgLwRzM7rsWSSHmhQkxEREQiEPqErnvFzCYCZwPj3d0B3H0nsDN4/LyZrQaOBJa1+kJ7SWPEREREpFsyswnAtcC57r49a//+ZlYcPD6czISub4aRQS1iIiIiEjpzj3UesVYmdL0O6AXMMzOAxcEdkuOAn5pZA5ACvuPuH+Z84U5SISYiIiLRiLdrcgdQDLzm7sMBzOxo4BwyPYSrgckA7v6omR0JXEKmEKsLK5S6JkVERKQ7uJ8OziNmZscCFwLHBdfc1dhVmW+hF2IzZkxn4cJnmTlzRrP95eXlVFTMY9Gi5xg/fnzYMRKXJWl5kpQlaXkOPGQ/nlgzgzvnXsPMOVc2OzaofAA/f/Jq7llwHaNPOaZbZUliniT93ihP18mStDxJypJXQddkWFv7b79H84idBzzk7jvdfQ3wBnBi/j6MXUItxEaNGkXfvqWMG3cyJSUljB69667SyZN/wJQpP+aMMyYwZcr1YcZIXJak5UlSliTmAVi6YBWTJtzGFec2/8N40VVncc9PHuOKc2bwjWvP7nZZkpQnab83ytM1siQtT5KydEPfAp4KHh8EvJt1bG2wL+9CLcTGjh3D/PkVAMyfX8GYMZ9uOjZixAgqKyvZtm0bNTU19OvXL8woicqStDxJypLEPADHf+5o7pp3LRdMOr3Z/qHDh7ByyWp2bNvJ9q21lPbr3a2yJClP0n5vlKdrZElaniRlCUW4SxwNMrNlWdulHY2VYx4xy3Gad/4D2F2ohdiAAQPYsqUGgOrqLQwcOLDpWHHxrq7W6urqZscKPUvS8iQpSxLzbH6/mgtGXM/lE27jU6cey9Dhu1bAKCre9U9oW/UO+g8o7TZZkpYnab83ytM1siQtT5KydEGb3H101tahWfWz5hH7WuM8YmRawA7OOm0I8F5+42aEWohVVVVRVtYfgLKy/lRVVTUdS6V29eeWlZU1O1boWZKWJ0lZkpinvq6B2u11pFJpFj31Eocfu6t1Op1KNz0uLetDTfX2XC9RkFmSlidpvzfK0zWyJC1PkrLkn2PpdGjb3mhtHjFgDnChmfUys8PIzCP2t05/BDmEWohVVi5m/PhTATjttPEsXryk6diKFSsYM2YMpaWllJWVUVNTE2aURGVJWp4kZUlinuwutRFjjmDdmo1Nz1evXMvwE4fSu7SEvv17s72mtttkSVqepP3eKE/XyJK0PEnKUmiCecQqgaPMbK2ZXQLcCfQnM4/Yi2b2CwB3fwV4BFgFzAW+6+6hzL0RaiG2fPlyamtrWbjwWdLpNEuXLuWOO2YCcOut05g69Sbmz3+Gm2++JcwYicuStDxJypLEPJ88aRj3LfoR9yy4jg/WV7Fq6Rq+P/2rADx4+1wuu/F87vjT1Txw25PdKkvS8iTt90Z5ukaWpOVJUpa8c8IeI9b227t/xd3L3b2nuw9x93vd/Qh3P9jdRwbbd7LOn+ruQ939KHd/qq3X7gzb1R3agZPNPDMXmkjXNbbPxLgjSAdV7pgddwSRApPC3XMNRA/dCcf09crZR4f2+r0+/cLzbS36bWb3kRkLtjFrQtcvATcCxwAnuvuyYP+hwKvAa8Hli7OLtHzSzPoiIiISgdgX/b6fTFfkA1n7VgJfBO7Jcf5qdx8ZdigVYiIiIhIJ870bVJ8P7r4waOnK3vcqQLDOZCy0xJGIiIgUgr2eR6wVh5nZcjP7s5n9U14S5qAWMREREQmfh941uamtMWJ7aD1wiLtvNrMTgD+a2XHuviVPr99ELWIiIiIiWYI1JjcHj58HVgNHhvFeahETERGRaOzlxKtRM7P9gQ/dPWVmh5OZ0PXNMN5LhZiIiIgUvGBC15PJjCVbC9wAfAj8HNgf+JOZvejuZwLjgJ+aWQOQAr7j7h+GkUuFmIiIiITPPdYWMXf/SiuHHstx7qPAo+EmytAYMRERESl4ZnafmW00s5VZ+75kZq+YWdrMRrc4/zoze8PMXjOzM8PKpRYxERERiYR1kQldzexY4ELgOOBjwHwzOzKM9SbVIiYiIiIFz90XkhkTlr3vVXd/Lcfp5wEPBXdPrgHeAE4MI5daxERERCQCoY8RG2Rmy7Kez3L3WXv5WgcBi7Oerw325Z0KMREREQmfE3Yhls8JXXOteeR5eu1m1DUpIiIi0txa4OCs50OA98J4IxViIiIiEoGgazKsLb/mABeaWS8zO4zMhK5/y/ebgLomRUREpBvYkwld3f0VM3sEWAU0AN8N445JUCEmIiIiUXDCXvS77bffgwldg/OnAlPDS5ShrkkREREpeK1M6Lqvmc0zs9eDrwOD/Yea2Q4zezHYfhFWLhViIiIiEjrDsXQ6tK0D7gcmtNg3Gahw92FARfC80Wp3Hxls38nLh5CDCjEREREpeLkmdCUzcevs4PFs4AtRZgKNERMREZGoJG9C18Huvh7A3deb2QFZxw4zs+XAFmCKuz+X57yACjEREREpDPmc0HU9cIi7bzazE4A/mtlx7r4lT6/fRIWYiIiIhC/8mfX3xgYzKw9aw8qBjQDuvhPYGTx+3sxWA0cCy1p/qb2jMWIiIiISgURO6DoHmBg8ngg8DmBm+5tZcfD4cDITur7ZyQ8gJ7WIiYiISMFrZULXW4BHzOwS4B3gS8Hp44CfmlkDkAK+4+4tB/rnhQoxERERCZ8D6VDWze7Y27c+oev4HOc+CjwabqIMdU2KiIhIwduTCV2DY9eZ2Rtm9pqZnRlWLhViIiIiEo14x4jdTwcndDWzY4ELgeOCa+5qHDOWb6EXYjNmTGfhwmeZOXNGs/3l5eVUVMxj0aLnGD9+t1bBgs+StDxJypK0PAcesh9PrJnBnXOvYeacK5sdG1Q+gJ8/eTX3LLiO0acc062yJDFPkn5vlKfrZElaniRlKSR7OKHrecBD7r7T3dcAbwAnhpEr1EJs1KhR9O1byrhxJ1NSUsLo0bum95g8+QdMmfJjzjhjAlOmXB9mjMRlSVqeJGVJYh6ApQtWMWnCbVxxbvM/jBdddRb3/OQxrjhnBt+49uxulyVJeZL2e6M8XSNL0vIkKUv+JfKuyWYTugKNE7oeBLybdd7aYF/ehVqIjR07hvnzKwCYP7+CMWM+3XRsxIgRVFZWsm3bNmpqaujXr1+YURKVJWl5kpQliXkAjv/c0dw171oumHR6s/1Dhw9h5ZLV7Ni2k+1baynt17tbZUlSnqT93ihP18iStDxJytIFDTKzZVnbpZ14LcuxL5Q7DUItxAYMGMCWLTUAVFdvYeDApjFwFBfv6mqtrq5udqzQsyQtT5KyJDHP5veruWDE9Vw+4TY+deqxDB0+pOlYUfGuf0LbqnfQf0Bpt8mStDxJ+71Rnq6RJWl5kpQl7xrvmgxrC2bWz9raW94IggldAbIndCXTAnZw1nlDgPfy+Gk0CbUQq6qqoqysPwBlZf2pqqpqOpZKpZoel5WVNTtW6FmSlidJWZKYp76ugdrtdaRSaRY99RKHH7urdTqd2tUcXlrWh5rq7d0mS9LyJO33Rnm6Rpak5UlSlm4i54Suwf4LzayXmR1GZkLXv4URINRCrLJyMePHnwrAaaeNZ/HiJU3HVqxYwZgxYygtLaWsrIyampowoyQqS9LyJClLEvNkd6mNGHME69ZsbHq+euVahp84lN6lJfTt35vtNbXdJkvS8iTt90Z5ukaWpOVJUpZQeDq8rR3BhK6VwFFmtjaYxPUW4HQzex04PXiOu78CPAKsAuYC33X3VO5X7pxQC7Hly5dTW1vLwoXPkk6nWbp0KXfcMROAW2+dxtSpNzF//jPcfPMtYcZIXJak5UlSliTm+eRJw7hv0Y+4Z8F1fLC+ilVL1/D96V8F4MHb53LZjedzx5+u5oHbnuxWWZKWJ2m/N8rTNbIkLU+SsuRfiN2SHZgo1t2/4u7l7t7T3Ye4+73uvtndx7v7sODrh1nnT3X3oe5+lLs/FdanYu4dH3tmZg6hTKMhEpmxfSa2f5IkQuWO2e2fJCJ7IIW75xqIHrrRhxf5kp+Gd9NOj4t2PO/uo9s/M1k0oauIiIiEL/zB+m0ys++Z2Uoze8XMrgj23Whm68zsxWD7fMifwm601qSIiIgUNDMbDnybzKSsdcBcM/tTcPh2d58WVzYVYiIiIhKN+Bb9PgZY7O7bAczsz8D5cYXJpq5JERERKQRtTei6EhhnZvuZWSnweXbNEzbJzFYEi4JHPjmbWsREREQkdO4dmmWiMza1Nljf3V81s/8C5gFbgZeABuBu4CYyI9huAqYD3wo1ZQtqERMREZGCF0xXcby7jyOz+Pfr7r7B3VPungZ+SUgLe7dFLWIiIiISjfjGiGFmB7j7RjM7BPgiMNbMyhsX/SYzZmxl1LlUiImIiEh38KiZ7QfUk5kp/yMz+7WZjSTTNfkWcFnUoVSIiYiISPgcCHeMWNtv7/5POfZdFEeWbCrEREREJBoxFmJJpcH6IiIiUvBamVl/XzObZ2avB18jn75ChZiIiIhEw0Pc2tBiZv1PAmeb2TBgMlDh7sOAiuB5pFSIiYiISKFrmlnf3RuAxpn1zwNmB+fMBr4QdTCNEStQY/tMjDuCSKfp97h1lTtmt3+SSJI4eNrCfIdBZrYs6/ksd58VPF4JTA3umtxBZmb9ZcDgxukr3H29mR0QZsBcVIiJiIhIIdibmfVjp65JERERiUY6xK0duWbWBzaYWTlA8HVjfr7RjlMhJiIiIgWvsdsxa2b93wFzgMYxEBOBx6POpa5JERERiUa4Y8Tak2tm/VuAR8zsEuAd4EtRh1IhJiIiIgWvlZn1NwPjY4jTRIWYiIiIhC/8uya7JI0RExERkQhYpmsyrK29dzf7fjCr/koz+52Z9TazG81snZm9GGyfj+CDaEYtYiIiIlLQzOwg4D+AY919h5k9AlwYHL7d3afFlU2FmIiIiETDY+2a7AH0MbN6oBR4Dzg0zkCgrkkREREpDIPMbFnWdmnjAXdfB0wjc2fkeqDa3Z8JDk8ysxVmdp8W/RYREZHCFAzWD2sjmFk/a2tc3oigwDoPOAz4GNDXzL4O3A0MBUaSKdCmR/2xqBATERGRQncasMbdP3D3euAPwGfcfYO7p9w9DfwSODHqYBojJiIiItFIx9b+8w4wxsxKySz6PR5YZmbljYt+A+eTWRw8UqF/IjNmTGfhwmeZOXNGs/3l5eVUVMxj0aLnGD8+mrnUkpQlaXkOPGQ/nlgzgzvnXsPMOVc2OzaofAA/f/Jq7llwHaNPOaZbZUlaniRlUZ6uk6VRkv7mJClL0vIkKUuhcPclwO+BF4CXydQ/s4BbzexlM1sBnAJ8P+psoRZio0aNom/fUsaNO5mSkhJGj961KPrkyT9gypQfc8YZE5gy5fowYyQuSxLzACxdsIpJE27jinOb/+O/6KqzuOcnj3HFOTP4xrVnd7ssScuTpCzK03WyJOlvTpKyJC1PkrLkncc7j5i73+DuR7v7cHe/yN13Bl8/4e4j3P3crNaxyIRaiI0dO4b58ysAmD+/gjFjPt10bMSIEVRWVrJt2zZqamro169fmFESlSWJeQCO/9zR3DXvWi6YdHqz/UOHD2HlktXs2LaT7VtrKe3Xu1tlSVqeJGVRnq6TJUl/c5KUJWl5kpRFohFqITZgwAC2bKkBoLp6CwMH7rortLi4uOlxdXV1s2OFniWJeTa/X80FI67n8gm38alTj2Xo8CFNx4qKd/2abKveQf8Bpd0mS9LyJCmL8nSdLJCsvzlJypK0PEnKEgZ3C21rTysz6+9rZvPM7PXga2FNX1FVVUVZWX8Aysr6U1VV1XQslUo1PS4rK2t2rNCzJDFPfV0DtdvrSKXSLHrqJQ4/9qCmY+lUuulxaVkfaqq3d5ssScuTpCzK03WyQLL+5iQpS9LyJClLKNJF4W1tyJpZf7S7DweKycysPxmocPdhQEXwPFKhFmKVlYsZP/5UAE47bTyLFy9pOrZixQrGjBlDaWkpZWVl1NTUhBklUVmSmCe7a2TEmCNYt2Zj0/PVK9cy/MSh9C4toW//3myvqe02WZKWJ0lZlKfrZIFk/c1JUpak5UlSlgLUOLN+D3bNrH8eMDs4Phv4QtShQi3Eli9fTm1tLQsXPks6nWbp0qXcccdMAG69dRpTp97E/PnPcPPNt4QZI3FZkpjnkycN475FP+KeBdfxwfoqVi1dw/enfxWAB2+fy2U3ns8df7qaB257sltlSVqeJGVRnq6TBZL1NydJWZKWJ0lZ8s3Dn9C1jfdudWb9wY0D9IOvB4T8MezG3L3jJ5t5pjVPkm5sn4lxRxCREFXumN3+SSK7SeEdGVAVguM/1sMXXTYgtNcvvXHz28CmrF2zGmfXD8Z+PQpcAFQB/01mOos73b0plJl95O6RjhPThK4iIiISgY5NM9EJm9x9dCvHmmbWBzCzPwCfATY0TupqZuXAxlauD42WOBIREZFC1zSzvpkZmZn1XwXmAI1dSBOBx6MOphYxERERiURMvaK4+xIza5xZvwFYTmZm/X7AI2Z2CZli7UtRZ1MhJiIiIgXP3W8AbmixeyeZ1rHYqBATERGR8DlxLvqdWPpERERERGKiFjERERGJRHvzfYXFzI4CHs7adTjwY2AA8G3gg2D/9e4ezeR+ARViIiIiEoGOrQkZBnd/DRgJYGbFwDrgMeCbwO3uPi2WYKhrUkRERLqX8cBqd3877iCgQkxERESi0DhYP7xFvweZ2bKs7dJWklwI/C7r+SQzW2Fm9wUz8EdKhZiIiIgUgk3uPjprm9XyBDMrAc4ls8QRwN3AUDLdluuB6VGFbaQxYiIiIhKJuAbrZzkLeMHdNwA0fgUws18CT0QdSC1iIiIi0l18haxuyWB9yUbnAyujDqQWMREREQmdE98SRwBmVgqcDlyWtftWMxtJJt5bLY5FQoWYiIiIFDx33w7s12LfRTHFaaJCTERERMLnpiWOctAnIiIiIhITFWIiIiISCU9baFtbzOwoM3sxa9tiZleY2b5mNs/MXg++ah4xERERKUzuFtrW9vv6a+4+0t1HAicA28kscTQZqHD3YUBF8DxSKsRERESkO8le4ug8YHawfzbwhajDaLC+iIiIhC85g/Wzlzga7O7rAdx9vZkdEHUYFWIi7Uh5CVvSR7ItfSjb0oew1Q+lzjN3QA/p8TgH95wTc8LkWVd/Fu80/GvT87F9LokxjYh0E4PMbFnW81ktlznKWuLoukiTtUGFmEg7tqYP4+913487RpexIz2YdxvOjTuGiCRQyEscbXL30e2c02yJI2CDmZUHrWHlwMYwA+aSiDZCkaQrZhv7FK3iYz2eYljPe+hJVdyREsndWF3/TZwS+hW9EXccEZGWmi1xBMwBJgaPJwKPRx1ILWIi7Sgr+gcn9vmPZvveafiXzIIY0sz7qfHUpIcxqLiS3raRrekj4o4kIgmR0CWObgEeMbNLgHeAL0WdS4WYSDvMVHF1RG16EO/Un08Paji050O833Bq3JFERJq0ssTRZjJ3UcZGhZiI5MWb9RNJ05vDez5IT9sadxwRSRoPfYxYl6QxYiIddFB6C1fV/ZV5O37NgZ4pNMam3uWg9JaYk8VvQ8M4qtPHMoK/8mL9v/OXHfdxUcOKuGOJiCRe6IXYjBnTWbjwWWbOnNFsf3l5ORUV81i06DnGj4+mVTBJWZKW58BD9uOJNTO4c+41zJxzZbNjg8oH8PMnr+aeBdcx+pRjulWWxjxPr5nGQ3Mncf6TP6Mv9U3Hjuq7k4ee/Hd+U3Flt/1sZv31dj4o+Tp9eqV4hIvoSz1FQEm/0qbzLvrcoMjyJOXzSVKWRkn6m5OkLEnLk6Qs+WW4F4W2dVWhJh81ahR9+5YybtzJlJSUMHr0rrtKJ0/+AVOm/JgzzpjAlCnXhxkjcVmSmAdg6YJVTJpwG1ec2/wf/0VXncU9P3mMK86ZwTeuPbvbZTnQt9Jn3lMUn3IyRWee2exY8Wc/S/GUH3Lg6Sdx2bVnRZInSZ8NwKXfqqdmWzE37ryOo3hz14HPfnbXOdd+PrKWwyR9PknKkqS/OUnKkrQ8ScoSirSFt7XDzAaY2e/N7O9m9qqZjTWzG81sXdYalJ+P4FNoJtRCbOzYMcyfXwHA/PkVjBnz6aZjI0aMoLKykm3btlFTU0O/fv3CjJKoLEnMA3D8547mrnnXcsGk05vtHzp8CCuXrGbHtp1s31pLab/e3SrLOQ2vUXzK52DhQrjiiuYHBw+Gykp6bNvCwC0bu91n8071KCqX78fIYVu58j9SzQ8OHtz00Gq28LXebxKFJH0+ScqSpL85ScqStDxJylKAfgbMdfejgU8Crwb7b29ch9Ldn4w6VKiF2IABA9iypQaA6uotDBy4a1Hz4uLipsfV1dXNjhV6liTm2fx+NReMuJ7LJ9zGp049lqHDhzQdKyre9WuyrXoH/QeU5nqJgswCMG7tEuzII+GUU+C00+ATn9h10DL/FdYTZ/+q9d3qs6n3/ry04RyKaeCXq8fT44xTc342AEXV1ZxeVhVqHkjW55OkLJCsvzlJypK0PEnKEoa4Fv02szJgHHBvJofXuXtV+N9x+0ItxKqqqigr6w9AWVl/qqqqmo6lUrv+67msrKzZsULPksQ89XUN1G6vI5VKs+iplzj82IOajqVT6abHpWV9qKne3m2yAPSp2wbbt0MqBU88AcOH7zrou6a26FHWr1t9Nm/X/ysN3o9vM4uj06+w9bF5bD3qBLbSl630pa5u17lbew4k9dF20l7c+gvmQZI+nyRlgWT9zUlSlqTlSVKWLmiQmS3L2i7NOnY48AHw/8xsuZn9ysz6BscmmdkKM7vPzCKvbkMtxCorFzN+fGYuodNOG8/ixUuajq1YsYIxY8ZQWlpKWVkZNTU1YUZJVJYk5snuGhkx5gjWrdm1ysPqlWsZfuJQepeW0Ld/b7bX1HabLAA7+mX9uzzpJFi9etfzDRtgzBgoLSVdtk+3+mx2emYA/i/4d/qzlf73zqT/7/9f5jFb+c/ffrzp3P4X/jP7bF3P2/XhzpWYpM8nSVkgWX9zkpQlaXmSlCXvgukrwtoIljjK2rLXmewBHA/c7e6jgG3AZOBuYCgwElgPTI/0MyHkQmz58uXU1taycOGzpNNpli5dyh13zATg1lunMXXqTcyf/ww333xLmDESlyWJeT550jDuW/Qj7llwHR+sr2LV0jV8f/pXAXjw9rlcduP53PGnq3ngtvC7z5OUBeDFk7+EL1sGixbBe+/B3/4G++6bObhoEUydSnr+fP76Xw+EniVpn03SJOnzSVIWSNbfnCRlSVqeJGUpMGuBte7eWNn+Hjje3Te4e8rd08AvgROjDmbuHZ813Mwcwu1akPwY22di+ydJhxyU3sIDO/9IHxqa9h3KGt7mUG7gRm7kJ+ygBxf3+gLrispiTBqPXJ8PwI3cwE+4EYDt9Oy2n09YKnfMjjuCdEkpPKZ1hj45qNSfOSe8Zc8OvP/l59ta9NvMngP+zd1fM7Mbgb7ADHdfHxz/PvBpd78wtJA5dN2JN0Qisq6ojKt6nsO7DGY9g9jEfqSDfzo19OVdBnNlz/N4yz5GynvFnDZ664rK+GHJKeygB/Xk/vv+w5JTVISJSNwuB35jZivIdEXeDNxqZi8H+04Bvh91KC1xJNIB9zXM4m52n5R0Btcwg2ugHqiH/YsXcUTJfdEHjNni4oO5uNcXuKBhJRNSqymlnrqs1vPFxQfHmE5EkiLOJY7c/UWgZYvZRTFEaUaFmIjkxbqiMmaUfIYZfAaAd+tH0KK3UkREWlAhJtIBx/e+Nu4IXc7BPedwcM85cccQkaRw2p3vqzvSGDERERGRmKgQExERkUjENbM+tLrW5L5mNs/MXg++FtaEriIiIiKNQp7QtT251pqcDFS4+zCgIngeKRViIiIiUtDaWGvyPKBxUr7ZwBeizqbB+iIiIhI6x3APtf1nkJkty3o+K2uZo+y1Jj8JPA98DxjcOKGru683swPCDJiLCjEREREpBJvamFm/ca3Jy919iZn9jBi6IXNR16SIiIiEL/xFv9uSc61JYIOZlQMEXzeG9v23QoWYiIiIFDR3fx9418yOCnaNB1YBc4DGxZknAo9HnU1dkyIiIhKJmCd0bVxrsgR4E/gmmQapR8zsEuAd4EtRh1IhJiIiIgWvlbUmIdM6FhsVYiIiIhIJLXG0O40RExEREYmJWsREREQkfN7hGfC7FRViIiIiEjon3q5JM3sLqAFSQIO7jzazG4Fvk5nsFeB6d38yylwqxERERKS7OMXdN7XYd7u7T4slDSrEREREJCIhL3HUJekTERERke7AgWfM7HkzuzRr/yQzW2Fm95nZwKhDqRATERGRSKTdQtsIFv3O2i5t8fYnufvxwFnAd81sHHA3MBQYCawHpkf4cQDqmhQREZHC0Nai37j7e8HXjWb2GHCiuy9sPG5mvwSeCD9mc2oRExERkfB5eAt+tzcthpn1NbP+jY+BM4CVjQt+B84HVob2/bdCLWIiIiJS6AYDj5kZZGqf37r7XDP7tZmNJDN+7C3gsqiDqRATERGR0MU5j5i7vwl8Msf+i2KI04y6JkVERERiEnohNmPGdBYufJaZM2c0219eXk5FxTwWLXqO8eOjWfg8SVmSlufAQ/bjiTUzuHPuNcycc2WzY4PKB/DzJ6/mngXXMfqUY7pVlqTlSVIW5ek6WRol6W9OkrIkLU+SsuSbu4W2dVWhFmKjRo2ib99Sxo07mZKSEkaP3nUzw+TJP2DKlB9zxhkTmDLl+jBjJC5LEvMALF2wikkTbuOKc5v/47/oqrO45yePccU5M/jGtWd3uyxJy5OkLMrTdbIk6W9OkrIkLU+SsoRBhdjuQi3Exo4dw/z5FQDMn1/BmDGfbjo2YsQIKisr2bZtGzU1NfTr1y/MKInKksQ8AMd/7mjumnctF0w6vdn+ocOHsHLJanZs28n2rbWU9uvdrbIkLU+SsihP18mSpL85ScqStDxJyiLRCLUQGzBgAFu21ABQXb2FgQN3TVhbXFzc9Li6urrZsULPksQ8m9+v5oIR13P5hNv41KnHMnT4kKZjRcW7fk22Ve+g/4DSbpMlaXmSlEV5uk4WSNbfnCRlSVqeJGXJOzfSXhTa1h4ze8vMXjazF81sWbBvXzObZ2avB18La2b9qqoqysr6A1BW1p+qqqqmY6lUqulxWVlZs2OFniWJeerrGqjdXkcqlWbRUy9x+LEHNR1Lp9JNj0vL+lBTvb3bZElaniRlUZ6ukwWS9TcnSVmSlidJWQrUKe4+Mmvi18lAhbsPAyqC53vNzOrNrMbMtuTYUrmuCbUQq6xczPjxpwJw2mnjWbx4SdOxFStWMGbMGEpLSykrK6OmpibMKInKksQ82V0jI8Ycwbo1G5uer165luEnDqV3aQl9+/dme01tt8mStDxJyqI8XScLJOtvTpKyJC1PkrLkm0NsE7q24TxgdvB4NvCFTn6bL7t7f3cva7kBL+W6INRCbPny5dTW1rJw4bOk02mWLl3KHXfMBODWW6cxdepNzJ//DDfffEuYMRKXJYl5PnnSMO5b9CPuWXAdH6yvYtXSNXx/+lcBePD2uVx24/nc8aereeC2J7tVlqTlSVIW5ek6WSBZf3OSlCVpeZKUpQDlWvR7sLuvBwi+HtDJ9yjZ02Pm7h1+dTNzKG7/RInd2D4T444gIiGq3DG7/ZNEdpPCY7rF8Lh9yvzhsSeG9vqfeLribWBT1q5Z7j6r8YmZfczd3zOzA4B5wOXAHHcfkHXOR+6+1+PEzGw5cIa7f9Bi/yBgnruPanmNZtYXERGRQrDHi34DG8ys3N3XB+tObmzt+g56AHjQzP5PMJs/ZnYYMCs4thvNrC8iIiKRiGsesdYW/QbmAI1dSBOBxzv3/fntwCJgiZl9ZGabgaXBvpm5rlGLmIiIiBS61hb9Xgo8YmaXAO8AX+rsG7n7T4Gfmtn+wfMP2jpfhZiIiIiEzyGdvEW/NwN5Wy/KzD6XYx/u/mczO8Hdn295XIWYiIiIhM7p2ksRddBVOfYZ8GfgIkCFmIiIiEgY3P3cNo5dkWu/BuuLiIhIJAp90W8zu8PMDg8eX2tmc3J1V2ZTISYiIiKSH6e4+5tmdhxwPvCftHK3ZCN1TYqIiEgk4hqsH6GG4Os/A79x98rMZPitU4uYiIiIdAtmVmxmy83sieD5jWa2zsxeDLbPd/ItVgWTxV4O/MHMSsksrdQqtYiJiIhIJBIwlut7wKtAWda+2919Wp5e/xvAWcBkd19nZkXAuLYuUIuYiIiIFDwzG0Kmy/BXYb2Hu9cDO4FLzWwamXUnt7V1jQoxERERCZ176HdNDjKzZVnbpS0izAR+AKRb7J9kZivM7D4z2+sFvwHM7AfAj4BXyLS8TQn2tUpdkyIiIlIIWl3028zOBja6+/NmdnLWobuBm8iM47oJmA58qxMZJgKj3X1H8L4Pkllr8tbWLlAhlidj+0xs/yQREZFuy+K8a/Ik4NxgMH5voMzMHnT3rzelM/sl8EQn32dnYxEG4O47zSzV1gXqmhQREZFIxDWhq7tf5+5D3P1Q4EJggbt/3czKs047H1jZyW/xyezuTTMbADzV1gVqERMREZHu6lYzG0mma/It4LLOvJi7T2nxvAq4vq1rVIiJiIhIJBIwfQXu/izwbPD4ony+tpktILPId2vvfUrLfSrERERERPLj6qzHvYAvAingkdYuUCEmIiIioXMKf4kjd3+hxa5KM1vi7pNbu0aFmIiIiEgemNl+WU+LgROAfdq6RoWYiIiIhM+TMUYsZEuzHjcAbwOXtHWBCjERERGRPHD3w/f0GhViIiIiEoFYJ3SNhJkdAfw7UA3cDtQBg9397dau0YSuIiIi0i2YWbGZLTezJ4Ln+5rZPDN7PfjaqbUmgUeBd4G+wJ1k1rX8dVsXqBATERGR0DngWGhbB32PzGLcjSYDFe4+DKgInnfGNne/3d1/AIx09zqgtK0LVIiJiIhIJOJa4gjAzIYA/wz8Kmv3ecDs4PFs4Aud/BafNbNvmlkxkAq6KtukMWIiIiJSCAaZ2bKs57PcfVbW85nAD4D+WfsGu/t6AHdfb2YHdDLDJDLdkveQGR/2u2Bfq0JvEZsxYzoLFz7LzJkzmu0vLy+nomIeixY9x/jx48OOkbgsBx6yH0+smcGdc69h5pwrmx0bVD6Anz95NfcsuI7RpxzT7fIkKYuIiORP2i20Ddjk7qOztqYizMzOBja6+/Nhfn/uXubuxe5e4u793P1T7r64rWtCbREbNWoUffuWMm7cydx1152MHj2aZcsyxerkyT9gypQfs2LFCp54Yg4VFRVhRklUlkZLF6ziJ5f8arf9F111Fvf85DFWr1zLbY/+B8v+99UcVxd2niRlERGRLu8k4Fwz+zzQGygzsweBDWZWHrSGlQMbO/MmZva5XPvd/c+tXRNqi9jYsWOYPz9T1MyfX8GYMZ9uOjZixAgqKyvZtm0bNTU19OvXL8woicrS6PjPHc1d867lgkmnN9s/dPgQVi5ZzY5tO9m+tZbSfr27XZ4kZRERkXwIb3xYe2PE3P06dx/i7ocCFwIL3P3rwBxgYnDaRODxTn6TV2VtPwaeAG5o64JQC7EBAwawZUsNANXVWxg4cNddocXFxU2Pq6urmx0r9CwAm9+v5oIR13P5hNv41KnHMnT4kKZjRcW7fizbqnfQf0CbN1wUXJ4kZRERkYJ2C3C6mb0OnB4832vufm7WNh44Dljf1jWhFmJVVVWUlWXGxJWV9aeqqqrpWCqVanpcVlbW7FihZwGor2ugdnsdqVSaRU+9xOHHHtR0LJ1KNz0uLetDTfX2bpUnSVlERCQ/3EMfI9bBHP6su58dPN7s7uPdfVjw9cP8fs/+DvBJM2u13gq1EKusXMz48acCcNpp41m8eEnTsRUrVjBmzBhKS0spKyujpqYmzCiJygI061IbMeYI1q3Z1S29euVahp84lN6lJfTt35vtNbXdKk+SsoiIiHSUZfyrmc00s9vN7F/cfbi7p1u7JtRCbPny5dTW1rJw4bOk02mWLl3KHXfMBODWW6cxdepNzJ//DDff3KmWwC6XBeCTJw3jvkU/4p4F1/HB+ipWLV3D96d/FYAHb5/LZTeezx1/upoHbnuy2+VJUhYREcmfOOcRC5OZ/a+Z9QX+P+BiYDnwIvBNM7urzWvdfU/eyKG4/RO7obF9JrZ/kohInlTumN3+SSK7SeExVS1H9t3X7zzu9PZP3EtnLn3keXcfHdobtMHMlrv7KDNbCXzCs4orM3vZ3T/R2rWa0FVEREQike74UkRdTU8z2xf4B3AAsAHAzAYDb7V1oQoxERERCZ1D7F2IIfovYAmZQmyVmT0b7D8FqGzrQhViIiIiIp3g7r82s6eBTwD7ZB36TXvXqhATERGRCOzZNBN5fWez3sBCoBeZ2uf37n6Dmd0IfBv4IDj1enffqzvB3H0jUGFmPYGjyDQCvubuDW1dp0JMRERECt1O4FR33xoUSn8xs6eCY7e7+7R8vImZjQB+T6awGw6sNLPL3f2F1q5RISYiIiKRiGuMWHAX49bgac9g6/i0ER33c+Bid19sZi8A5wKPAie3dkGo84iJiIiIJIGZFZvZi2QW9p7n7o0zu08ysxVmdp+ZdXaNw33cfXHjW7r7ZqBvWxeoEBMREZHQOZAOcQMGmdmyrO3SZu/vnnL3kcAQ4EQzGw7cDQwFRpJZE3J6J7/NYjNr7G0sMrMvA5vaukBdkyIiIlIINnVkQld3rwqml5iQPTbMzH4JPNHJDDOBI4FVwHvAmcA32rpAhZiIiIiEz+MbI2Zm+wP1QRHWBzgN+C8zK3f39cFp5wMrO/M+7n5v1uOzOnKNCjEREREpdOXAbDMrJjMs6xF3f8LMfm1mI8n0nL4FXBZ1MBViIiIiEom45hFz9xXAqBz7L4ohTjMqxERERCQSXrhrTe61Ll2Ije0zMe4IIiIiIgCY2X2we7Xp7t9s7ZouXYiJiIhI1+AxLnEUoey7LnsB5wBVbV2gQkxEREQkD9z9Dy12/c7MFrR1jQoxERERiUQ6jEWFEsTMPp71tAj4BHBIW9eoEBMRERHJj/8hM0bMyXRNHkime7JVKsREREQkEoV+16S7j8h+bmbHAlcBC1u7RmtNioiIiITA3VcBY9s6Ry1iIiIiEjonvgldzaw3mVapXmRqn9+7+w1mti/wMHAomZn1v+zuH3XifbKnrygCjgMWt3WNCjEREREpdDuBU919q5n1BP5iZk8BXwQq3P0WM5sMTAau7cT7ZE9f0QBMD2b1b5UKMREREQmfg8d016S7O7A1eNoz2Bw4Dzg52D8beJbOFWJ/Aba6+/aOXqAxYiIiIhKJNBbaBgwys2VZ26XZ721mxWb2IrARmOfuS4DB7r4eIPh6QCe/xSeAspY7zaxf0AK3G7WIiYiISCHY5O6jWzvo7ilgpJkNAB4zs+EhZChx9/cbn5jZXHefEHSJHpjrAhViIiIiEjoHPAFLHLl7lZk9C0wANphZubuvN7NyMq1lnVFsZj3cvcHMSoBPmVlPd6+nlZpLXZMiIiJS0Mxs/6AlDDPrA5wG/B2YA0wMTpsIPN7Jt1oAPGhmFwO/AZ4CHjWz3wPP5bpALWIiIiISgVgX/S4HZptZMZlGqEfc/QkzqwQeMbNLgHeAL3Xyfb4PXAaMBn5BpjD7VzJTWvx3rgtUiImIiEhBC6aQGJVj/2ZgfD7ew8y+Bjzt7ne3OJSzAGukQkxEREQiUeBrfh8EPBR0fVaQ6ZZc4u7pti7SGDERERGRTnL3W939NOBM4HngYmCZmT1kZt/QXZMiIiISmziXOIqSu28lM+j/cQAzOxo4i8yEsWe2PF8tYiIiIiJ5YGYXm9khweN/MrMrgSp3v93ddyvCQIWYiIiIRCQd4pYQ1wDrgm7Ie8ksMv5wWxeoEBMREZFIuFtoW0LUBzP4/zPwoLv/J9C/rQtUiImIiIjkR42ZfQ/4HvC4mRntjMfXYH0REREJnXu3GKx/MZki7FZ3f8nM+gL/p60LVIiJiIiI5IG7vw1cmfV8G7CorWvUNSkiIiKR8BC3tpjZwWb2v2b2qpm9EnQfYmY3mtk6M3sx2D6f12+4A9QiJiIiIoWuAbjK3V8ws/7A82Y2Lzh2u7tPiyuYCjERERGJRFxjxNx9PbA+eFxjZq+SWZIoduqaFBERkUIwyMyWZW2X5jrJzA4lswD4kmDXJDNbYWb3mdnAqMI2UouYiIiIhM4JfeLVTe4+uq0TzKwf8ChwhbtvMbO7gZuCeDcB04FvhRuzObWIiYiISMEzs55kirDfuPsfANx9g7un3D0N/BI4MepcahETERGRCMQ3A34wseq9wKvuPiNrf3kwfgzgfGBl1NlUiImIiEgkYlwT8iTgIuBlM3sx2Hc98BUzG0mma/It4LKog6kQExERkYLm7n8BcjXHPRl1lpZUiImIiEjoHJK0OHdiaLC+iIiISEzUIiYi0gWN7TMx7gjSQZU7ZscdITHS7a1F1A2pRUxEREQkJmoRExERkUioQWx3ahETERERiYlaxERERCR07vEt+p1kahETERERiYlaxERERCQSMc6sn1gqxERERCQSmtB1dyrERKRTNjacxOr6b7V73jEl0xhQ/GoEiUREug4VYiKSJ2l6UtPq0SIaIswiIknjxNc1aWYHAw8ABwYxZrn7z8xsX+Bh4FAyi35/2d0/ijKbCjERyYte9iHH97427hgiIrk0AFe5+wtm1h943szmAd8AKtz9FjObDEwGIv1DprsmRUREJBLu4W1tv6+vd/cXgsc1wKvAQcB5QOMaVLOBL4T2zbdCLWIiIiJSCAaZ2bKs57PcfVbLk8zsUGAUsAQY7O7rIVOsmdkBkSTNokJMRPKi2NNcVfdXJqRW04d6dtCTucVDeajHcNYVlcUdT0QSIE2od01ucvfRbZ1gZv2AR4Er3H2LWfx3caprUkTypC9TUw8ymA/py3Y+wd95NPVD/m3nh4xJvRt3OBHp5sysJ5ki7Dfu/odg9wYzKw+OlwMbo86lQkxEOmWg7wBgO31ZzgmUUEeaItZwOL/j60yggk11X6U8tTXmpCISJwfSHt7WFss0fd0LvOruM7IOzQEmBo8nAo+H8K23SYWYiHTKhPQLTOEnvMQIaunFh+zHdkpZxGc4jXkA/JpvsL3+nJiTikg3dhJwEXCqmb0YbJ8HbgFON7PXgdOD55HSGDER6ZTJ6V/Tl/pm+4pJ8xkqeZoz+SJ/4HG+wDP+FUakX6FPUeQt/yKSEO3d3Rje+/pfoNUBauOjzNKSWsREpFP6tCjCshXhTONqANIU81FqZESpRCR5jHSIW1elQkxEOmUHPds8fgSrGcQHANT6oCgiiYh0GSrERKRT5hYPpb4L/9eoiEQkxMlc4+ryzAcVYiLSKQ/1GE4Dxa0eX83hbGJ/AHrbpqhiiYh0CSrERGSvucO6ojJ+WHIKO+ixW8tYHcaVTAuepRlY/FL0IUUkERoX/Q5r66p016SI7LWdvh//2PkdNvT4C6+WDONbDQs4K72a3jSwkM9wJf/JS/wTAIOL/0yfog0xJxYRSRYVYiLSKdv8cN6sP5w3uZinqaeYWlL0xrMG8e9f/BcO6/nbGFOKSBK0N/Fqd6RCTET2Wk/bwqE9f8PW9FC2pQ+m3vuTohSjgd72Af2KVnNA8V8oK34j7qgiIomkQkxE9lqx1VPeYwGwIO4oItIFqEFsdxqsLyIiIhITtYiJiIhI6DKLfmvOwZZUiImIiEgkuvLEq2FR16SIiIhITNQiJiIiIpHoyhOvhkUtYiIiIlLwzOw+M9toZiuz9t1oZuvM7MVg+3zUuVSIiYiISOic2Bf9vh+YkGP/7e4+MtiezOO33CEqxERERKTguftC4MO4c7SkQkxEREQiEfKi34PMbFnWdmkHY00ysxVB1+XAPHybe0SFmIiIiBSCTe4+Omub1YFr7gaGAiOB9cD0MAPmorsmRUREJHyevEW/3X1D42Mz+yXwRNQZ1CImIiIi3ZKZlWc9PR9Y2dq5YVGLmIiIiITOiXfRbzP7HXAymbFka4EbgJPNbGQQ7S3gsqhzqRATERGRSMTZNenuX8mx+97Ig7SgrkkRERGRmKhFTERERCKhRb93p0IsRvXel49SI6lOH8O29MfZ6fvhFNGTGvoWvc3+PRaxX/HyuGN2e1vTh/BRaiTb0h9nhw+mwfuTojfF1NKnaD0Dil5mcI9n6Wnb4o4qIiJdjAqxGD1fOwPP+hEYdRgp6tiXuvS+fFQ3igFFKziy5G6KrS7GpN3bxobPsiE1vum5UUcR9TTQj5r0MGrSw1jfcDpHl/yc/sWrY0wqIpJcjhb9zkWFWIycHvSzN9m/xyIGFK2kd9EmAGrT+7Gu4Ww2psZRlR7Bm/UXM6zkVzGn7b76F62htz1C/+LX6WPr6WE7AEh5LzanTuDt+i/RQBmv1X2Xkb1/2HRcRESkPSrEYnRsya3sU/zabvt7F21maMlsrC7NhtTJbEqN5ZD0o/Qq+iiGlLJ/j8qc+4ttJwf0+CslVs2rdVdSzz58lBrB/j2WRJxQRKRrSNqErkmguyZjlKsIy3ZAj+eaHm/1Q0NOI3urX9Gu7sg63zfGJCIi0tWoRSzBjPqsZ6qZk6omfWTT495FG2NMIiKSbGoQ250KsQQ4KL2FCxtWMiG1mj7Us4OezC0eyv+1q5vOKbW1MSYUaP5zKsJYwyHMsIt5wC8BoLdtYGDRSzGnFBGRrkSFWMzGpN5lat3/0oMUPYP/VuhLPeNS7/M+ZwHQv+gf9Cna0NbLSMgaf04DqWEnvXcdCP7z7mO2kgNLZlNkDfEEFBFJOEdjxHJRf1eMDkpvYWrd/9KHhqYiDCCN8S0e4H0+Ri9q+XTxrBhTSvbP6UDeZzDv05etTcdPYQEP+79xOG/FF1JERLokFWIxurBhJT1I7bb/e/yMJzgHgJ/zXS5L/ynqaJIl++f0FofxPuVspT8bOIBpXMWLjGQcf8XrTok5qYhIgnlmZv2wtq5KhViMJqRWN2sJA7ia27iTywG4nSv4NvcxIaVJQuOU6+cEcAAfcBUzmMsEDOdR/3c+So2IIaGISNeQDnHrqlSIxahPs7si4Qf8F9PJDNC/jau5gp8BUNriPIlWy59TSyeylM/yFwA2NHwuikgiIlIgNFg/RjvoSd/g/+Sv4VamcQ0At3INVzO96bzt9Iwln2Rk/5xacxDrAKj1A6KIJCLS5Wiwfm5qEYvR3OKh1GNczW3NirBrmNZ0Tj3G3OKhcUUUdv2c2rKawwEopjaKSCIiUiBUiMXooR7DuYZpTd2R07iqWREG0EAxD/cYHkc8AdyN3xUPp4HiVs+p4FSWciIAZe2sliAi0p15iFtXpUIsRn9NfYufcSUAt3ElVzGj6Vg9xg568MOSU1hXVBZXxG5vp+/LU/XTOad4GqsYRl1Wy9i7DGEqkzmPx3GK6MFWyns8E2NaERHpajRGLCY70/vyXsNZwbM0/5fruI0fYGQq+50UU0tP0nWZ/+P/WI+n+VjPp+OK261t90OoSH2P4/gePahjH6qppQ/b6Nd0Ti/7gKNK7qLEtsSYVEQk2eIcI2Zm9wFnAxvdfXiwb1/gYeBQ4C3gy+7+UZS5VIjFxJuNOSqimv3bPD9Fr3ADSU4lVsWRJXdTnTqKrenDqfN9+JABGGlKbDN97V0GFi9nUPESik13t4qIJNj9wJ3AA1n7JgMV7n6LmU0Onl8bZSgVYjHpXbSZsX0uiTuGtKPIUuxXvIz9ipfFHUVEpMuLc+JVd19oZoe22H0ecHLweDbwLCrERERERPbYIDPL/q/mWe7e3hqBg919PYC7rzezyOcgUiEmIiIioXNCnwF/k7uPDvct8k+FmIiIiEQinbxFITeYWXnQGlYObIw6gKavEBERke5qDjAxeDwReDzqAGoRExERkUjE2R5mZr8jMzB/kJmtBW4AbgEeMbNLgHeAL0WdS4WYiIiIFDx3/0orh8ZHGqQFFWIiIiISOnct+p2LxoiJiIiIxEQtYiIiIhIBx7v08tzh2KNCrK/tx4je54WVRaRbqtwxO+4ITcb2mdj+SSKyR5L072pFbeQ3BUo71CImIiIioXM0RiwXjRETERERiYlaxERERCQSIS9x1CWpEBMREZFIePKWOIqduiZFREREYqIWMREREQmdo67JXNQiJiIiIhITtYiJiIgkVIP3ZkPDKXyYHkltejApetOTGnoXbaSs6DXKe8yjh+2IO2aHaYzY7lSIiYiIJFB16iher7uMevYBwGigiJ3UsS916X3Zkj6afYuX08PejTmpdIYKMRERkYTZkjqCv9d9jzS92KfoFYb0mEP/otWYOSnvyQ7/GB+mjqeYrtMaBhojlosKMRERkQRJeQlv1F9Cml7sW7SMI0t+gdmuLr1iq6efvU2/ordjTCn5okJMREQkQTalxrLTD6CInRxe8utmRVhXllniqDC+l3xSISYiIpIgH6TGAnBQ0VIm1z/DhNRq+lDPDnoyt3goD/UYzrqisphTSr6oEBMREUmItPdga/pQAK5O/47h1PEf3M3TnMkH7M/A1EeMTv2NwT2WsKHn+/GG3QuOWsRaUiEmIiKSEDt9P5yeAGyknBN4iW30o4SdlLKdDRzInzgXGs7l8PQzDO71cMyJ94wG6+9OE7qKiIgkRAN9mx7/J9fRk3p+x4VspR8fsS/vcDAX8jsA3kyfwfqG0+KKKnmiQkxERCQp3JoepinmF3yHC3mYnjQAcDBr+Q1fYxQvALC2/mzcu8b/lTtOOsStq+oaPz0REZFuoMhqmx4fzDtcwCO7n4NzFdMBaKA/W/3jkeWT/NMYMRERkYQosaqmx0fz91bPO4ZXmx7vTO9H/6I1YcbKD9f0FbmoRUxERCQheto29iVzN6S10d1Wn/V/32atniZdgAoxERGRBCkrWgXAqxzTain2Csc1Pe5lH0SQKj88xP91VSrEREREEqRvj78B8C6H8BsubHasHmMbPbnOpgBQwof0tXcizyj5o0JMREQkQcqKX2ffomUAfIdfMJuvspMebKUn9xZ9jmOKFrDRhwFwcM/HuswSSA6x3jVpZm+Z2ctm9qKZLQv/O+4YDdYXERFJmCNK7uXVuv7UpI/iG/yGb3I/RdSRSu+aZ2xIjzkc0OOvMabskk5x901xh8imQkxERCRhiq2O40puY2Pqs3yQGsuO9EGk6E0JH9K/+HXKiyvoX7w67ph7rCvP9xUWFWIiIiIJZOYM7vEcg3s8F3eUPAl9UP2gFl2Os9x9VrMA8Ixl+nLvaXEsNirEREREpBBscvfRbRw/yd3fM7MDgHlm9nd3XxhVuNaoEBMREZHQNQ7Wj+393d8Lvm40s8eAE4HYCzHdNSkiIiIFzcz6mln/xsfAGcDKeFNlqEVMREREwmeQtnRc7z4YeMwyyxD0AH7r7nPjCpNNhZiIiIgUNHd/E/hk3DlyUSEmIiIikdD0FbvTGDERERGRmKhFTEREREKXmUUstjFiiaUWMREREZGYqEWsQFXumB13BOmC9HvTtrF9JsYdQTpIv8utScX67hojtjsVYiIiIhKJGKevSCx1TYqIiIjERC1iIiIiErrMUH21iLWkFjERERGRmKhFTERERCKhFrHdqUVMREREJCZqERMREZEIaELXXNQiJiIiIhITtYiJiIhI6BzNI5aLWsREREREYqIWMREREYmA5hHLRYWYiIiIRMJjXusyidQ1KSIiIhITtYiJiIhI6LTEUW5qERMRERGJiVrEREREJBJqEdudWsREREREYqIWMREREYmA667JHNQiJiIiIhITtYiJiIhI6ByNEctFLWIiIiIiMVGLmIiIiETC1SK2GxViIiIiEgEnrcH6u1HXpIiIiEhM1CImIiIioXPUNZmLWsREREREYqIWMREREYmAk3aNEWtJLWIiIiIiMVGLmIiIiERCY8R2pxYxERERkZioRUxEREQioEW/c1GLmIiIiEhM1CImIiIioXMg7Roj1pIKMREREYmAa7B+DntUiG3zzVTumB1Wlj02ts/EuCOISDeSpL9/IlIY1CImIiIi4XNwTei6Gw3WFxEREYmJWsREREQkdJkRYhoj1pJaxERERERiohYxERERiYRr+ordqEVMREREJCZqERMREZEIaImjXNQiJiIiIhITtYiJiIhIJDRGbHcqxERERCQCWuIoF3VNioiIiMRELWIiIiISOkdLHOWiFjERERGRmKhFTERERCLgGqyfg1rERERERGKiFjERERGJhO6a3J1axERERERiohYxERERCZ9rQtdc1CImIiIiEhO1iImIiEgENLN+LirEREREJHSa0DU3dU2KiIiIxEQtYiIiIhIBB3VN7kYtYiIiIiIxUYuYiIiIRELTV+xOLWIiIiIiMVGLmIiIiERA01fkohYxERERkZioRUxEREQiohaxltQiJiIiIhITtYiJiIhINHTX5G5UiImIiEgENFg/F3VNioiIiMRELWIiIiISEbWItaQWMREREZGYmLt3/GSzD4C3w4sjIiIiIfq4u+8fxxubFbmF2BHn1D/v7qNbf3+bAPwMKAZ+5e63hBZmD+zRJxLXD09ERERkb5lZMfD/AacDa4GlZjbH3VfFm0xjxERERCQSjtPxXrg8OxF4w93fBDCzh4DzgNgLMY0RExERkUJ3EPBu1vO1wb7YqUVMREREovA0NAwK8fV7m9myrOez3H1W8NhynB9b81w2FWIiIiISOnefEOPbrwUOzno+BHgvpizNqGtSRERECt1SYJiZHWZmJcCFwJyYMwFqERMREZEC5+4NZjYJeJrM9BX3ufsrMccC9nAeMRERERHJH3VNioiIiMREhZiIiIhITFSIiYiIiMREhZiIiIhITFSIiYiIiMREhZiIiIhITFSIiYiIiMREhZiIiIhITP5/xbK71etYqdwAAAAASUVORK5CYII=\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "% matplotlib inline\n", - "from IPython.display import HTML\n", - "\n", - "\n", - "plotstart = \"2009-01-01\"\n", - "plotend = \"2009-01-20\"\n", - "Option = 5\n", - "threshold = 10\n", - "\n", - "Anim = Coello.plotDistributedResults(plotstart, plotend, Figsize=(9, 9), Option=Option, threshold=160,\n", - " PlotNumbers=False,\n", - " TicksSpacing=5, Interval=200, Gauges=True, cmap='inferno', Textloc=[0.1, 0.2],\n", - " Gaugecolor='red', ColorScale=2, IDcolor='blue', IDsize=25)\n", - "HTML(Anim.to_html5_video())" - ] - }, - { - "cell_type": "markdown", - "id": "6ec8aec1-2d06-4823-8f34-52ddf100562b", - "metadata": {}, - "source": [ - "- if you like to save the animation" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "38879dae-84bd-4548-9025-4c153b298160", - "metadata": {}, - "outputs": [], - "source": [ - "SaveTo = Path + \"anim.mov\"\n", - "Coello.saveAnimation(VideoFormat=\"mov\", Path=SaveTo, SaveFrames=3)" - ] - }, - { - "cell_type": "markdown", - "id": "5e9a0c7f-a173-46d7-a72f-39a21dfea980", - "metadata": {}, - "source": [ - "# 11-Store the result into rasters" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "id": "cc604109-7328-4a0c-ba7a-c9a960d95285", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Data is saved successfully\n" - ] - } - ], - "source": [ - "StartDate = \"2009-01-01\"\n", - "EndDate = \"2010-04-20\"\n", - "Prefix = 'Qtot_'\n", - "SaveTo = Path + \"/results/\"\n", - "Coello.saveResults(FlowAccPath, Result=1, StartDate=StartDate, EndDate=EndDate,\n", - " Path=SaveTo, Prefix=Prefix)" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "id": "a36944d8-73f7-4a97-9fbb-11ab0cb338fc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'Hapi/Model/results/anim.mov'" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Path" - ] - } - ], - "metadata": { - "kernelspec": { - "name": "pycharm-e2d4c152", - "language": "python", - "display_name": "PyCharm (pythonProject)" - }, - "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.8.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/examples/hydrological-model/Note books/coello-lumped-model-run-muskingum.ipynb b/examples/hydrological-model/Note books/coello-lumped-model-run-muskingum.ipynb index fb58173bf..42c36a793 100644 --- a/examples/hydrological-model/Note books/coello-lumped-model-run-muskingum.ipynb +++ b/examples/hydrological-model/Note books/coello-lumped-model-run-muskingum.ipynb @@ -1,460 +1,460 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "a364d52f-69a7-475b-933d-89650d591a05", - "metadata": {}, - "source": [ - "# Lumped Conceptual Model" - ] - }, - { - "cell_type": "markdown", - "id": "5ec32bfb-e0a3-47c1-9371-b9225ee110e0", - "metadata": {}, - "source": [ - "- please change the directory to the root directory of the repo" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "e6b2629f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": "'C:\\\\MyComputer\\\\01Algorithms\\\\Hydrology\\\\Hapi'" - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import os\n", - "\n", - "\n", - "os.chdir(\"../../../\")\n", - "os.getcwd()" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### make sure the above path refers to the root directory of the repo\n", - "├── Hapi\n", - "│ ├── Examples\n", - "│ │ ├── data\n", - "│ │ ├── GIS\n", - "│ │ ├── Hydrological model\n", - "│ │ │ ├── data\n", - "│ │ │ ├── Note books\n", - "│ │ │ │ ├── lumped-model-run-coello.ipynb (current file)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "markdown", - "id": "0c51f000", - "metadata": {}, - "source": [ - "### Import Modules" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "efd94b20", - "metadata": {}, - "outputs": [], - "source": [ - "import datetime as dt\n", - "\n", - "import Hapi.rrm.hbv_bergestrom92 as HBVLumped\n", - "import Hapi.sm.performancecriteria as PC\n", - "from Hapi.catchment import Catchment\n", - "from Hapi.rrm.routing import Routing\n", - "from Hapi.run import Run" - ] - }, - { - "cell_type": "markdown", - "id": "883d3c98", - "metadata": {}, - "source": [ - "### Paths" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "78d8611e", - "metadata": {}, - "outputs": [], - "source": [ - "Parameterpath = \"Examples/Hydrological model/data/lumped_model/Coello_Lumped2021-03-08_muskingum.txt\"\n", - "MeteoDataPath = \"Examples/Hydrological model/data/lumped_model/meteo_data-MSWEP.csv\"\n", - "\n", - "Path = \"Examples/Hydrological model/data/lumped_model/\"\n", - "SaveTo = \"Examples/Hydrological model/data/lumped_model/\"" - ] - }, - { - "cell_type": "markdown", - "id": "85e3c2f9", - "metadata": {}, - "source": [ - "### Meteorological data" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "5812a7f5", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-20 00:08:44.371 | DEBUG | catchment:readLumpedInputs:720 - Lumped Model inputs are read successfully\n" - ] - } - ], - "source": [ - "start = \"2009-01-01\"\n", - "end = \"2011-12-31\"\n", - "name = \"Coello\"\n", - "Coello = Catchment(name, start, end)\n", - "Coello.readLumpedInputs(MeteoDataPath)" - ] - }, - { - "cell_type": "markdown", - "id": "eca51f8c-de23-4743-9e80-0ea3497a17b5", - "metadata": {}, - "source": [ - "### Lumped model" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "e99e1b85", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-20 00:08:48.044 | DEBUG | catchment:readLumpedModel:678 - Lumped model is read successfully\n" - ] - } - ], - "source": [ - "# catchment area\n", - "AreaCoeff = 1530\n", - "# [Snow pack, Soil moisture, Upper zone, Lower Zone, Water content]\n", - "InitialCond = [0, 10, 10, 10, 0]\n", - "\n", - "Coello.readLumpedModel(HBVLumped, AreaCoeff, InitialCond)" - ] - }, - { - "cell_type": "markdown", - "id": "38e7ae6a-d43a-4fc0-9985-4dd69b5f84e1", - "metadata": {}, - "source": [ - "### Model Parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "bb1d0450-e973-44af-88af-f6f8e44c1783", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-20 00:08:50.314 | DEBUG | catchment:readParameters:624 - Parameters are read successfully\n" - ] - } - ], - "source": [ - "Snow = 0 # no snow subroutine\n", - "Coello.readParameters(Parameterpath, Snow)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "256545fe-9c7c-4628-b559-f43a307c5db4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": "[0.7,\n 51.1726422,\n 1.147999,\n 0.1,\n 0.88137,\n 0.82353,\n 0.35651,\n 0.03223,\n 47.426,\n 5.2744,\n 1.0,\n 0.2]" - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Coello.Parameters" - ] - }, - { - "cell_type": "markdown", - "id": "602e4629", - "metadata": {}, - "source": [ - "### Observed flow" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "54555e66", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-20 00:08:54.915 | DEBUG | catchment:readDischargeGauges:867 - Gauges data are read successfully\n" - ] - } - ], - "source": [ - "Coello.readDischargeGauges(Path + \"Qout_c.csv\", fmt=\"%Y-%m-%d\")" - ] - }, - { - "cell_type": "markdown", - "id": "60f825cc-49ee-4680-b8cb-901bd11774ec", - "metadata": {}, - "source": [ - "- the discharge data should be stored in the text file with the date stored in the first column and the discharge values in the second column" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "outputs": [ - { - "data": { - "text/plain": " q\n2009-01-01 51.10\n2009-01-02 56.23\n2009-01-03 52.22\n2009-01-04 47.72\n2009-01-05 41.31\n... ...\n2011-12-27 44.02\n2011-12-28 42.35\n2011-12-29 39.76\n2011-12-30 37.68\n2011-12-31 36.64\n\n[1095 rows x 1 columns]", - "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
q
2009-01-0151.10
2009-01-0256.23
2009-01-0352.22
2009-01-0447.72
2009-01-0541.31
......
2011-12-2744.02
2011-12-2842.35
2011-12-2939.76
2011-12-3037.68
2011-12-3136.64
\n

1095 rows × 1 columns

\n
" - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Coello.QGauges" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "id": "894ecdc8", - "metadata": {}, - "source": [ - "### Routing" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "f80b814a", - "metadata": {}, - "outputs": [], - "source": [ - "# RoutingFn = Routing.TriangularRouting2\n", - "RoutingFn = Routing.Muskingum_V\n", - "Route = 1" - ] - }, - { - "cell_type": "markdown", - "id": "560380a3-6dd5-44a5-b9c4-8d65e53d5a5f", - "metadata": {}, - "source": [ - "### Run The Model" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "c4f9c7fc-c087-4fef-be5c-f970e1f13f68", - "metadata": {}, - "outputs": [], - "source": [ - "Run.runLumped(Coello, Route, RoutingFn)" - ] - }, - { - "cell_type": "markdown", - "id": "3b30a30b", - "metadata": {}, - "source": [ - "### Calculate performance criteria" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "7e1a0414", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "RMSE= 24.59\n", - "NSE= 0.12\n", - "NSEhf= 0.21\n", - "KGE= 0.56\n", - "WB= 96.59\n" - ] - } - ], - "source": [ - "Metrics = dict()\n", - "\n", - "# gaugeid = Coello.QGauges.columns[-1]\n", - "Qobs = Coello.QGauges['q']\n", - "\n", - "Metrics['RMSE'] = PC.RMSE(Qobs, Coello.Qsim['q'])\n", - "Metrics['NSE'] = PC.NSE(Qobs, Coello.Qsim['q'])\n", - "Metrics['NSEhf'] = PC.NSEHF(Qobs, Coello.Qsim['q'])\n", - "Metrics['KGE'] = PC.KGE(Qobs, Coello.Qsim['q'])\n", - "Metrics['WB'] = PC.WB(Qobs, Coello.Qsim['q'])\n", - "\n", - "print(\"RMSE= \" + str(round(Metrics['RMSE'], 2)))\n", - "print(\"NSE= \" + str(round(Metrics['NSE'], 2)))\n", - "print(\"NSEhf= \" + str(round(Metrics['NSEhf'], 2)))\n", - "print(\"KGE= \" + str(round(Metrics['KGE'], 2)))\n", - "print(\"WB= \" + str(round(Metrics['WB'], 2)))" - ] - }, - { - "cell_type": "markdown", - "id": "da4641e2", - "metadata": {}, - "source": [ - "### Plot Hydrograph" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "17053377", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-20 00:10:49.092 | DEBUG | catchment:plotHydrograph:1142 - ----------------------------------\n", - "2022-03-20 00:10:49.092 | DEBUG | catchment:plotHydrograph:1143 - Gauge - q\n" - ] + "cells": [ + { + "cell_type": "markdown", + "id": "a364d52f-69a7-475b-933d-89650d591a05", + "metadata": {}, + "source": [ + "# Lumped Conceptual Model" + ] + }, + { + "cell_type": "markdown", + "id": "5ec32bfb-e0a3-47c1-9371-b9225ee110e0", + "metadata": {}, + "source": [ + "- please change the directory to the root directory of the repo" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e6b2629f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "'C:\\\\MyComputer\\\\01Algorithms\\\\Hydrology\\\\Hapi'" + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import os\n", + "\n", + "\n", + "os.chdir(\"../../../\")\n", + "os.getcwd()" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### make sure the above path refers to the root directory of the repo\n", + "\u251c\u2500\u2500 Hapi\n", + "\u2502 \u251c\u2500\u2500 Examples\n", + "\u2502 \u2502 \u251c\u2500\u2500 data\n", + "\u2502 \u2502 \u251c\u2500\u2500 GIS\n", + "\u2502 \u2502 \u251c\u2500\u2500 Hydrological model\n", + "\u2502 \u2502 \u2502 \u251c\u2500\u2500 data\n", + "\u2502 \u2502 \u2502 \u251c\u2500\u2500 Note books\n", + "\u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 lumped-model-run-coello.ipynb (current file)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "markdown", + "id": "0c51f000", + "metadata": {}, + "source": [ + "### Import Modules" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "efd94b20", + "metadata": {}, + "outputs": [], + "source": [ + "import datetime as dt\n", + "\n", + "import Hapi.rrm.hbv_bergestrom92 as HBVLumped\n", + "import Hapi.sm.performancecriteria as PC\n", + "from Hapi.catchment import Catchment\n", + "from Hapi.rrm.routing import Routing\n", + "from Hapi.run import Run" + ] + }, + { + "cell_type": "markdown", + "id": "883d3c98", + "metadata": {}, + "source": [ + "### Paths" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "78d8611e", + "metadata": {}, + "outputs": [], + "source": [ + "Parameterpath = \"Examples/Hydrological model/data/lumped_model/Coello_Lumped2021-03-08_muskingum.txt\"\n", + "MeteoDataPath = \"Examples/Hydrological model/data/lumped_model/meteo_data-MSWEP.csv\"\n", + "\n", + "Path = \"Examples/Hydrological model/data/lumped_model/\"\n", + "SaveTo = \"Examples/Hydrological model/data/lumped_model/\"" + ] + }, + { + "cell_type": "markdown", + "id": "85e3c2f9", + "metadata": {}, + "source": [ + "### Meteorological data" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5812a7f5", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-20 00:08:44.371 | DEBUG | catchment:readLumpedInputs:720 - Lumped Model inputs are read successfully\n" + ] + } + ], + "source": [ + "start = \"2009-01-01\"\n", + "end = \"2011-12-31\"\n", + "name = \"Coello\"\n", + "Coello = Catchment(name, start, end)\n", + "Coello.readLumpedInputs(MeteoDataPath)" + ] + }, + { + "cell_type": "markdown", + "id": "eca51f8c-de23-4743-9e80-0ea3497a17b5", + "metadata": {}, + "source": [ + "### Lumped model" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "e99e1b85", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-20 00:08:48.044 | DEBUG | catchment:readLumpedModel:678 - Lumped model is read successfully\n" + ] + } + ], + "source": [ + "# catchment area\n", + "AreaCoeff = 1530\n", + "# [Snow pack, Soil moisture, Upper zone, Lower Zone, Water content]\n", + "InitialCond = [0, 10, 10, 10, 0]\n", + "\n", + "Coello.readLumpedModel(HBVLumped, AreaCoeff, InitialCond)" + ] + }, + { + "cell_type": "markdown", + "id": "38e7ae6a-d43a-4fc0-9985-4dd69b5f84e1", + "metadata": {}, + "source": [ + "### Model Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "bb1d0450-e973-44af-88af-f6f8e44c1783", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-20 00:08:50.314 | DEBUG | catchment:readParameters:624 - Parameters are read successfully\n" + ] + } + ], + "source": [ + "Snow = 0 # no snow subroutine\n", + "Coello.readParameters(Parameterpath, Snow)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "256545fe-9c7c-4628-b559-f43a307c5db4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "[0.7,\n 51.1726422,\n 1.147999,\n 0.1,\n 0.88137,\n 0.82353,\n 0.35651,\n 0.03223,\n 47.426,\n 5.2744,\n 1.0,\n 0.2]" + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Coello.Parameters" + ] + }, + { + "cell_type": "markdown", + "id": "602e4629", + "metadata": {}, + "source": [ + "### Observed flow" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "54555e66", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-20 00:08:54.915 | DEBUG | catchment:readDischargeGauges:867 - Gauges data are read successfully\n" + ] + } + ], + "source": [ + "Coello.readDischargeGauges(Path + \"Qout_c.csv\", fmt=\"%Y-%m-%d\")" + ] + }, + { + "cell_type": "markdown", + "id": "60f825cc-49ee-4680-b8cb-901bd11774ec", + "metadata": {}, + "source": [ + "- the discharge data should be stored in the text file with the date stored in the first column and the discharge values in the second column" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "outputs": [ + { + "data": { + "text/plain": " q\n2009-01-01 51.10\n2009-01-02 56.23\n2009-01-03 52.22\n2009-01-04 47.72\n2009-01-05 41.31\n... ...\n2011-12-27 44.02\n2011-12-28 42.35\n2011-12-29 39.76\n2011-12-30 37.68\n2011-12-31 36.64\n\n[1095 rows x 1 columns]", + "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
q
2009-01-0151.10
2009-01-0256.23
2009-01-0352.22
2009-01-0447.72
2009-01-0541.31
......
2011-12-2744.02
2011-12-2842.35
2011-12-2939.76
2011-12-3037.68
2011-12-3136.64
\n

1095 rows \u00d7 1 columns

\n
" + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Coello.QGauges" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "id": "894ecdc8", + "metadata": {}, + "source": [ + "### Routing" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "f80b814a", + "metadata": {}, + "outputs": [], + "source": [ + "# RoutingFn = Routing.TriangularRouting2\n", + "RoutingFn = Routing.Muskingum_V\n", + "Route = 1" + ] + }, + { + "cell_type": "markdown", + "id": "560380a3-6dd5-44a5-b9c4-8d65e53d5a5f", + "metadata": {}, + "source": [ + "### Run The Model" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "c4f9c7fc-c087-4fef-be5c-f970e1f13f68", + "metadata": {}, + "outputs": [], + "source": [ + "Run.runLumped(Coello, Route, RoutingFn)" + ] + }, + { + "cell_type": "markdown", + "id": "3b30a30b", + "metadata": {}, + "source": [ + "### Calculate performance criteria" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "7e1a0414", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE= 24.59\n", + "NSE= 0.12\n", + "NSEhf= 0.21\n", + "KGE= 0.56\n", + "WB= 96.59\n" + ] + } + ], + "source": [ + "Metrics = dict()\n", + "\n", + "# gaugeid = Coello.QGauges.columns[-1]\n", + "Qobs = Coello.QGauges['q']\n", + "\n", + "Metrics['RMSE'] = PC.RMSE(Qobs, Coello.Qsim['q'])\n", + "Metrics['NSE'] = PC.NSE(Qobs, Coello.Qsim['q'])\n", + "Metrics['NSEhf'] = PC.NSEHF(Qobs, Coello.Qsim['q'])\n", + "Metrics['KGE'] = PC.KGE(Qobs, Coello.Qsim['q'])\n", + "Metrics['WB'] = PC.WB(Qobs, Coello.Qsim['q'])\n", + "\n", + "print(\"RMSE= \" + str(round(Metrics['RMSE'], 2)))\n", + "print(\"NSE= \" + str(round(Metrics['NSE'], 2)))\n", + "print(\"NSEhf= \" + str(round(Metrics['NSEhf'], 2)))\n", + "print(\"KGE= \" + str(round(Metrics['KGE'], 2)))\n", + "print(\"WB= \" + str(round(Metrics['WB'], 2)))" + ] + }, + { + "cell_type": "markdown", + "id": "da4641e2", + "metadata": {}, + "source": [ + "### Plot Hydrograph" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "17053377", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-20 00:10:49.092 | DEBUG | catchment:plotHydrograph:1142 - ----------------------------------\n", + "2022-03-20 00:10:49.092 | DEBUG | catchment:plotHydrograph:1143 - Gauge - q\n" + ] + }, + { + "ename": "AttributeError", + "evalue": "'NoneType' object has no attribute 'loc'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Input \u001b[1;32mIn [19]\u001b[0m, in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 2\u001b[0m plotstart \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m2009-01-01\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 3\u001b[0m plotend \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m2011-12-31\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m----> 4\u001b[0m \u001b[43mCoello\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mPlotHydrograph\u001b[49m\u001b[43m(\u001b[49m\u001b[43mplotstart\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mplotend\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgaugei\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mTitle\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mLumped Model\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mC:\\MyComputer\\01Algorithms\\Hydrology\\Hapi\\Hapi\\catchment.py:1144\u001b[0m, in \u001b[0;36mCatchment.plotHydrograph\u001b[1;34m(self, plotstart, plotend, gaugei, Hapicolor, gaugecolor, linewidth, Hapiorder, Gaugeorder, labelfontsize, XMajorfmt, Noxticks, Title, Xaxis_fmt, label, fmt)\u001b[0m\n\u001b[0;32m 1142\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m----------------------------------\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 1143\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mGauge - \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mstr\u001b[39m(gaugeid))\n\u001b[1;32m-> 1144\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRMSE= \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mround\u001b[39m(\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mMetrics\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloc\u001b[49m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRMSE\u001b[39m\u001b[38;5;124m\"\u001b[39m, gaugeid], \u001b[38;5;241m2\u001b[39m)))\n\u001b[0;32m 1145\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNSE= \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mround\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mMetrics\u001b[38;5;241m.\u001b[39mloc[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNSE\u001b[39m\u001b[38;5;124m\"\u001b[39m, gaugeid], \u001b[38;5;241m2\u001b[39m)))\n\u001b[0;32m 1146\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNSEhf= \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mround\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mMetrics\u001b[38;5;241m.\u001b[39mloc[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNSEhf\u001b[39m\u001b[38;5;124m\"\u001b[39m, gaugeid], \u001b[38;5;241m2\u001b[39m)))\n", + "\u001b[1;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'loc'" + ] + }, + { + "data": { + "text/plain": "
", + "image/png": "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3ooQghkzZrRPxxQKRRAVM7/FsS0HpKTo9ifbuztBKAGlaHEGDhzIO++84/vudDr5+OOP6devXzv2SqFQBOIq3tPeXQiJElARymWXXca//vUv3/d58+bRo0cP3/fs7GyefPJJhg8fTkJCAldeeSUFBQWceOKJJCUlMXHiRPbs8dx8DWav119/nW7dupGVlcXTTz/t25fb7eaxxx6jX79+ZGRkcO6551JaWupb/7///Y/evXuTkZHBI4880mjfJ0+ezMKFC33H//777xk+fDhdu3bVHfPhhx+md+/edO7cmUsuuYTy8vKwjtlYfxUKRZhEeKKG/VJA3f/BUsTk11vkb/KD37fbeXz66afMmTOHjRs38tVXX3HiiSfy73//m+LiYtxuNy+88IKu/S+//MKmTZv48ccfeeyxx3ymxRdeeIHZs2czf/58cnNzSUtL44YbbgBg7dq1XHfddfzvf/8jNzeXkpIScnJyQvYrNjaWU089lVmzZgHw7rvvcskll+jazJgxgxkzZvDLL7+wdetWqqqquPHGG8M6Zqj+KhSKjsN+KaA6CjfddBNdunShe/fuHHHEEYwdO5ZRo0YRExPDGWecwV9//aVrf99995GQkMCBBx7I5ZdfzsyZMwF47bXXeOSRR+jRowcxMTHcf//9fPLJJzidTj755BNOOeUUjjzySGJiYnjooYewWBq/bS655BLeffddysvLmT9/Pqeffrpu/fvvv89tt91G3759SUxM5NFHH2XWrFlhHTNUfxUKRcehw6c66sh06dLF9zkuLi7oe1VVla59z57+Cia9e/dm1apVAOzYsYMzzjhDJwSsVisFBQXk5ubqtktISCAjI6PRvh1++OEUFRXx8MMPc8oppwQFS+fm5tK7d29df5xOZ1jHDNVfhULRcdgvBdT9U0Zz/5SgvIQRRUJCAjU1Nb7v+fn5e73PXbt2MXjwYAB27txJt27dAI/geuuttzjssMOCtsnKymLdunW+7zU1NZSUlIR1vIsuuogHH3yQX375JWhdt27d2LHDX0Rz586d2Gw2unTp0ugxQ/V3+/btYfVNoVBEPsrEFwE4HA7q6up8f06nk5EjR/Ltt99SWlpKfn4+zz333F4f56GHHqKmpoY1a9bw9ttvc9555wFw7bXXcs899/gERlFREV984SnNdfbZZ/P111/z22+/YbfbmT59Om63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\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "gaugei = 0\n", + "plotstart = \"2009-01-01\"\n", + "plotend = \"2011-12-31\"\n", + "Coello.plotHydrograph(plotstart, plotend, gaugei, Title=\"Lumped Model\")" + ] + }, + { + "cell_type": "markdown", + "id": "6193fb9c", + "metadata": {}, + "source": [ + "### Save Results" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "88e8fae6", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-02-24 00:25:14.873 | DEBUG | catchment:saveResults:1366 - Data is saved successfully\n" + ] + } + ], + "source": [ + "StartDate = \"2009-01-01\"\n", + "EndDate = \"2010-04-20\"\n", + "\n", + "Path = SaveTo + \"Results-Lumped-Model_\" + str(dt.datetime.now())[0:10] + \".txt\"\n", + "Coello.saveResults(Result=5, start=StartDate, end=EndDate, Path=Path)" + ] + } + ], + "metadata": { + "kernelspec": { + "name": "pycharm-e2d4c152", + "language": "python", + "display_name": "PyCharm (pythonProject)" + }, + "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.8.10" + } }, - { - "ename": "AttributeError", - "evalue": "'NoneType' object has no attribute 'loc'", - "output_type": "error", - "traceback": [ - "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[1;31mAttributeError\u001B[0m Traceback (most recent call last)", - "Input \u001B[1;32mIn [19]\u001B[0m, in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[0;32m 2\u001B[0m plotstart \u001B[38;5;241m=\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m2009-01-01\u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[0;32m 3\u001B[0m plotend \u001B[38;5;241m=\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m2011-12-31\u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[1;32m----> 4\u001B[0m \u001B[43mCoello\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mPlotHydrograph\u001B[49m\u001B[43m(\u001B[49m\u001B[43mplotstart\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mplotend\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mgaugei\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mTitle\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mLumped Model\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m)\u001B[49m\n", - "File \u001B[1;32mC:\\MyComputer\\01Algorithms\\Hydrology\\Hapi\\Hapi\\catchment.py:1144\u001B[0m, in \u001B[0;36mCatchment.plotHydrograph\u001B[1;34m(self, plotstart, plotend, gaugei, Hapicolor, gaugecolor, linewidth, Hapiorder, Gaugeorder, labelfontsize, XMajorfmt, Noxticks, Title, Xaxis_fmt, label, fmt)\u001B[0m\n\u001B[0;32m 1142\u001B[0m logger\u001B[38;5;241m.\u001B[39mdebug(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m----------------------------------\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[0;32m 1143\u001B[0m logger\u001B[38;5;241m.\u001B[39mdebug(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mGauge - \u001B[39m\u001B[38;5;124m\"\u001B[39m \u001B[38;5;241m+\u001B[39m \u001B[38;5;28mstr\u001B[39m(gaugeid))\n\u001B[1;32m-> 1144\u001B[0m logger\u001B[38;5;241m.\u001B[39mdebug(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mRMSE= \u001B[39m\u001B[38;5;124m\"\u001B[39m \u001B[38;5;241m+\u001B[39m \u001B[38;5;28mstr\u001B[39m(\u001B[38;5;28mround\u001B[39m(\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mMetrics\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mloc\u001B[49m[\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mRMSE\u001B[39m\u001B[38;5;124m\"\u001B[39m, gaugeid], \u001B[38;5;241m2\u001B[39m)))\n\u001B[0;32m 1145\u001B[0m logger\u001B[38;5;241m.\u001B[39mdebug(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mNSE= \u001B[39m\u001B[38;5;124m\"\u001B[39m \u001B[38;5;241m+\u001B[39m \u001B[38;5;28mstr\u001B[39m(\u001B[38;5;28mround\u001B[39m(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mMetrics\u001B[38;5;241m.\u001B[39mloc[\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mNSE\u001B[39m\u001B[38;5;124m\"\u001B[39m, gaugeid], \u001B[38;5;241m2\u001B[39m)))\n\u001B[0;32m 1146\u001B[0m logger\u001B[38;5;241m.\u001B[39mdebug(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mNSEhf= \u001B[39m\u001B[38;5;124m\"\u001B[39m \u001B[38;5;241m+\u001B[39m \u001B[38;5;28mstr\u001B[39m(\u001B[38;5;28mround\u001B[39m(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mMetrics\u001B[38;5;241m.\u001B[39mloc[\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mNSEhf\u001B[39m\u001B[38;5;124m\"\u001B[39m, gaugeid], \u001B[38;5;241m2\u001B[39m)))\n", - "\u001B[1;31mAttributeError\u001B[0m: 'NoneType' object has no attribute 'loc'" - ] - }, - { - "data": { - "text/plain": "
", - "image/png": "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3ooQghkzZrRPxxQKRRAVM7/FsS0HpKTo9ifbuztBKAGlaHEGDhzIO++84/vudDr5+OOP6devXzv2SqFQBOIq3tPeXQiJElARymWXXca//vUv3/d58+bRo0cP3/fs7GyefPJJhg8fTkJCAldeeSUFBQWceOKJJCUlMXHiRPbs8dx8DWav119/nW7dupGVlcXTTz/t25fb7eaxxx6jX79+ZGRkcO6551JaWupb/7///Y/evXuTkZHBI4880mjfJ0+ezMKFC33H//777xk+fDhdu3bVHfPhhx+md+/edO7cmUsuuYTy8vKwjtlYfxUKRZhEeKKG/VJA3f/BUsTk11vkb/KD37fbeXz66afMmTOHjRs38tVXX3HiiSfy73//m+LiYtxuNy+88IKu/S+//MKmTZv48ccfeeyxx3ymxRdeeIHZs2czf/58cnNzSUtL44YbbgBg7dq1XHfddfzvf/8jNzeXkpIScnJyQvYrNjaWU089lVmzZgHw7rvvcskll+jazJgxgxkzZvDLL7+wdetWqqqquPHGG8M6Zqj+KhSKjsN+KaA6CjfddBNdunShe/fuHHHEEYwdO5ZRo0YRExPDGWecwV9//aVrf99995GQkMCBBx7I5ZdfzsyZMwF47bXXeOSRR+jRowcxMTHcf//9fPLJJzidTj755BNOOeUUjjzySGJiYnjooYewWBq/bS655BLeffddysvLmT9/Pqeffrpu/fvvv89tt91G3759SUxM5NFHH2XWrFlhHTNUfxUKRcehw6c66sh06dLF9zkuLi7oe1VVla59z57+Cia9e/dm1apVAOzYsYMzzjhDJwSsVisFBQXk5ubqtktISCAjI6PRvh1++OEUFRXx8MMPc8oppwQFS+fm5tK7d29df5xOZ1jHDNVfhULRcdgvBdT9U0Zz/5SgvIQRRUJCAjU1Nb7v+fn5e73PXbt2MXjwYAB27txJt27dAI/geuuttzjssMOCtsnKymLdunW+7zU1NZSUlIR1vIsuuogHH3yQX375JWhdt27d2LHDX0Rz586d2Gw2unTp0ugxQ/V3+/btYfVNoVBEPsrEFwE4HA7q6up8f06nk5EjR/Ltt99SWlpKfn4+zz333F4f56GHHqKmpoY1a9bw9ttvc9555wFw7bXXcs899/gERlFREV984SnNdfbZZ/P111/z22+/YbfbmT59Om63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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "gaugei = 0\n", - "plotstart = \"2009-01-01\"\n", - "plotend = \"2011-12-31\"\n", - "Coello.plotHydrograph(plotstart, plotend, gaugei, Title=\"Lumped Model\")" - ] - }, - { - "cell_type": "markdown", - "id": "6193fb9c", - "metadata": {}, - "source": [ - "### Save Results" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "88e8fae6", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-02-24 00:25:14.873 | DEBUG | catchment:saveResults:1366 - Data is saved successfully\n" - ] - } - ], - "source": [ - "StartDate = \"2009-01-01\"\n", - "EndDate = \"2010-04-20\"\n", - "\n", - "Path = SaveTo + \"Results-Lumped-Model_\" + str(dt.datetime.now())[0:10] + \".txt\"\n", - "Coello.saveResults(Result=5, start=StartDate, end=EndDate, Path=Path)" - ] - } - ], - "metadata": { - "kernelspec": { - "name": "pycharm-e2d4c152", - "language": "python", - "display_name": "PyCharm (pythonProject)" - }, - "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.8.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/examples/hydrological-model/Note books/lumped-model-run-coello.ipynb b/examples/hydrological-model/Note books/lumped-model-run-coello.ipynb index a4b904851..523aeaf93 100644 --- a/examples/hydrological-model/Note books/lumped-model-run-coello.ipynb +++ b/examples/hydrological-model/Note books/lumped-model-run-coello.ipynb @@ -1,431 +1,431 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "a364d52f-69a7-475b-933d-89650d591a05", - "metadata": {}, - "source": [ - "# Lumped Conceptual Model" - ] - }, - { - "cell_type": "markdown", - "id": "5ec32bfb-e0a3-47c1-9371-b9225ee110e0", - "metadata": {}, - "source": [ - "- please change the directory to the root directory of the repo" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "e6b2629f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": "'C:\\\\MyComputer\\\\01Algorithms\\\\hydrology\\\\Hapi'" - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import os\n", - "\n", - "os.chdir(\"../../../\")\n", - "os.getcwd()" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### make sure the above path refers to the root directory of the repo\n", - "├── Hapi\n", - "│ ├── Examples\n", - "│ │ ├── data\n", - "│ │ ├── GIS\n", - "│ │ ├── Hydrological model\n", - "│ │ │ ├── data\n", - "│ │ │ ├── Note books\n", - "│ │ │ │ ├── lumped-model-run-coello.ipynb (current file)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "markdown", - "id": "0c51f000", - "metadata": {}, - "source": [ - "### Import Modules" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "efd94b20", - "metadata": {}, - "outputs": [], - "source": [ - "import datetime as dt\n", - "\n", - "import Hapi.rrm.hbv_bergestrom92 as HBVLumped\n", - "import Hapi.sm.performancecriteria as PC\n", - "from Hapi.catchment import Catchment\n", - "from Hapi.rrm.routing import Routing\n", - "from Hapi.run import Run" - ] - }, - { - "cell_type": "markdown", - "id": "883d3c98", - "metadata": {}, - "source": [ - "### Paths" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "78d8611e", - "metadata": {}, - "outputs": [], - "source": [ - "Parameterpath = \"Examples/Hydrological model/data/lumped_model/Coello_Lumped2021-03-08_muskingum.txt\"\n", - "MeteoDataPath = \"Examples/Hydrological model/data/lumped_model/meteo_data-MSWEP.csv\"\n", - "\n", - "Path = \"Examples/Hydrological model/data/lumped_model/\"\n", - "SaveTo = \"Examples/Hydrological model/data/lumped_model/\"" - ] - }, - { - "cell_type": "markdown", - "id": "85e3c2f9", - "metadata": {}, - "source": [ - "### Meteorological data" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "5812a7f5", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-02-24 00:24:16.724 | DEBUG | catchment:readLumpedInputs:635 - Lumped Model inputs are read successfully\n" - ] - } - ], - "source": [ - "start = \"2009-01-01\"\n", - "end = \"2011-12-31\"\n", - "name = \"Coello\"\n", - "Coello = Catchment(name, start, end)\n", - "Coello.readLumpedInputs(MeteoDataPath)" - ] - }, - { - "cell_type": "markdown", - "id": "eca51f8c-de23-4743-9e80-0ea3497a17b5", - "metadata": {}, - "source": [ - "### Lumped model" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "e99e1b85", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-02-24 00:24:19.308 | DEBUG | catchment:readLumpedModel:593 - Lumped model is read successfully\n" - ] - } - ], - "source": [ - "# catchment area\n", - "AreaCoeff = 1530\n", - "# [Snow pack, Soil moisture, Upper zone, Lower Zone, Water content]\n", - "InitialCond = [0, 10, 10, 10, 0]\n", - "\n", - "Coello.readLumpedModel(HBVLumped, AreaCoeff, InitialCond)" - ] - }, - { - "cell_type": "markdown", - "id": "38e7ae6a-d43a-4fc0-9985-4dd69b5f84e1", - "metadata": {}, - "source": [ - "### Model Parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "bb1d0450-e973-44af-88af-f6f8e44c1783", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-02-24 00:24:21.601 | DEBUG | catchment:readParameters:539 - Parameters are read successfully\n" - ] - } - ], - "source": [ - "Snow = 0 # no snow subroutine\n", - "Coello.readParameters(Parameterpath, Snow)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "256545fe-9c7c-4628-b559-f43a307c5db4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": "[0.7,\n 51.1726422,\n 1.147999,\n 0.1,\n 0.88137,\n 0.82353,\n 0.35651,\n 0.03223,\n 47.426,\n 5.2744,\n 1.0,\n 0.2]" - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Coello.Parameters" - ] - }, - { - "cell_type": "markdown", - "id": "602e4629", - "metadata": {}, - "source": [ - "### Observed flow" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "54555e66", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-02-24 00:24:26.270 | DEBUG | catchment:readDischargeGauges:781 - Gauges data are read successfully\n" - ] - } - ], - "source": [ - "Coello.readDischargeGauges(Path + \"Qout_c.csv\", fmt=\"%Y-%m-%d\")" - ] - }, - { - "cell_type": "markdown", - "id": "60f825cc-49ee-4680-b8cb-901bd11774ec", - "metadata": {}, - "source": [ - "- the discharge data should be stored in the text file with the date stored in the first column and the discharge values in the second column" - ] - }, - { - "cell_type": "markdown", - "id": "894ecdc8", - "metadata": {}, - "source": [ - "### Routing" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "f80b814a", - "metadata": {}, - "outputs": [], - "source": [ - "# RoutingFn = Routing.TriangularRouting2\n", - "RoutingFn = Routing.Muskingum_V\n", - "Route = 1" - ] - }, - { - "cell_type": "markdown", - "id": "560380a3-6dd5-44a5-b9c4-8d65e53d5a5f", - "metadata": {}, - "source": [ - "### Run The Model" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "c4f9c7fc-c087-4fef-be5c-f970e1f13f68", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model Run has finished\n" - ] - } - ], - "source": [ - "Run.runLumped(Coello, Route, RoutingFn)" - ] - }, - { - "cell_type": "markdown", - "id": "3b30a30b", - "metadata": {}, - "source": [ - "### Calculate performance criteria" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "7e1a0414", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "RMSE= 24.59\n", - "NSE= 0.12\n", - "NSEhf= 0.21\n", - "KGE= 0.56\n", - "WB= 96.59\n" - ] - } - ], - "source": [ - "Metrics = dict()\n", - "\n", - "# gaugeid = Coello.QGauges.columns[-1]\n", - "Qobs = Coello.QGauges['q']\n", - "\n", - "Metrics['RMSE'] = PC.RMSE(Qobs, Coello.Qsim['q'])\n", - "Metrics['NSE'] = PC.NSE(Qobs, Coello.Qsim['q'])\n", - "Metrics['NSEhf'] = PC.NSEHF(Qobs, Coello.Qsim['q'])\n", - "Metrics['KGE'] = PC.KGE(Qobs, Coello.Qsim['q'])\n", - "Metrics['WB'] = PC.WB(Qobs, Coello.Qsim['q'])\n", - "\n", - "print(\"RMSE= \" + str(round(Metrics['RMSE'], 2)))\n", - "print(\"NSE= \" + str(round(Metrics['NSE'], 2)))\n", - "print(\"NSEhf= \" + str(round(Metrics['NSEhf'], 2)))\n", - "print(\"KGE= \" + str(round(Metrics['KGE'], 2)))\n", - "print(\"WB= \" + str(round(Metrics['WB'], 2)))" - ] - }, - { - "cell_type": "markdown", - "id": "da4641e2", - "metadata": {}, - "source": [ - "### Plot Hydrograph" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "17053377", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": "(
,\n )" - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" + "cells": [ + { + "cell_type": "markdown", + "id": "a364d52f-69a7-475b-933d-89650d591a05", + "metadata": {}, + "source": [ + "# Lumped Conceptual Model" + ] + }, + { + "cell_type": "markdown", + "id": "5ec32bfb-e0a3-47c1-9371-b9225ee110e0", + "metadata": {}, + "source": [ + "- please change the directory to the root directory of the repo" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e6b2629f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "'C:\\\\MyComputer\\\\01Algorithms\\\\hydrology\\\\Hapi'" + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import os\n", + "\n", + "os.chdir(\"../../../\")\n", + "os.getcwd()" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### make sure the above path refers to the root directory of the repo\n", + "\u251c\u2500\u2500 Hapi\n", + "\u2502 \u251c\u2500\u2500 Examples\n", + "\u2502 \u2502 \u251c\u2500\u2500 data\n", + "\u2502 \u2502 \u251c\u2500\u2500 GIS\n", + "\u2502 \u2502 \u251c\u2500\u2500 Hydrological model\n", + "\u2502 \u2502 \u2502 \u251c\u2500\u2500 data\n", + "\u2502 \u2502 \u2502 \u251c\u2500\u2500 Note books\n", + "\u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 lumped-model-run-coello.ipynb (current file)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "markdown", + "id": "0c51f000", + "metadata": {}, + "source": [ + "### Import Modules" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "efd94b20", + "metadata": {}, + "outputs": [], + "source": [ + "import datetime as dt\n", + "\n", + "import Hapi.rrm.hbv_bergestrom92 as HBVLumped\n", + "import Hapi.sm.performancecriteria as PC\n", + "from Hapi.catchment import Catchment\n", + "from Hapi.rrm.routing import Routing\n", + "from Hapi.run import Run" + ] + }, + { + "cell_type": "markdown", + "id": "883d3c98", + "metadata": {}, + "source": [ + "### Paths" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "78d8611e", + "metadata": {}, + "outputs": [], + "source": [ + "Parameterpath = \"Examples/Hydrological model/data/lumped_model/Coello_Lumped2021-03-08_muskingum.txt\"\n", + "MeteoDataPath = \"Examples/Hydrological model/data/lumped_model/meteo_data-MSWEP.csv\"\n", + "\n", + "Path = \"Examples/Hydrological model/data/lumped_model/\"\n", + "SaveTo = \"Examples/Hydrological model/data/lumped_model/\"" + ] + }, + { + "cell_type": "markdown", + "id": "85e3c2f9", + "metadata": {}, + "source": [ + "### Meteorological data" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "5812a7f5", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-02-24 00:24:16.724 | DEBUG | catchment:readLumpedInputs:635 - Lumped Model inputs are read successfully\n" + ] + } + ], + "source": [ + "start = \"2009-01-01\"\n", + "end = \"2011-12-31\"\n", + "name = \"Coello\"\n", + "Coello = Catchment(name, start, end)\n", + "Coello.readLumpedInputs(MeteoDataPath)" + ] + }, + { + "cell_type": "markdown", + "id": "eca51f8c-de23-4743-9e80-0ea3497a17b5", + "metadata": {}, + "source": [ + "### Lumped model" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "e99e1b85", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-02-24 00:24:19.308 | DEBUG | catchment:readLumpedModel:593 - Lumped model is read successfully\n" + ] + } + ], + "source": [ + "# catchment area\n", + "AreaCoeff = 1530\n", + "# [Snow pack, Soil moisture, Upper zone, Lower Zone, Water content]\n", + "InitialCond = [0, 10, 10, 10, 0]\n", + "\n", + "Coello.readLumpedModel(HBVLumped, AreaCoeff, InitialCond)" + ] + }, + { + "cell_type": "markdown", + "id": "38e7ae6a-d43a-4fc0-9985-4dd69b5f84e1", + "metadata": {}, + "source": [ + "### Model Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "bb1d0450-e973-44af-88af-f6f8e44c1783", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-02-24 00:24:21.601 | DEBUG | catchment:readParameters:539 - Parameters are read successfully\n" + ] + } + ], + "source": [ + "Snow = 0 # no snow subroutine\n", + "Coello.readParameters(Parameterpath, Snow)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "256545fe-9c7c-4628-b559-f43a307c5db4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "[0.7,\n 51.1726422,\n 1.147999,\n 0.1,\n 0.88137,\n 0.82353,\n 0.35651,\n 0.03223,\n 47.426,\n 5.2744,\n 1.0,\n 0.2]" + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Coello.Parameters" + ] + }, + { + "cell_type": "markdown", + "id": "602e4629", + "metadata": {}, + "source": [ + "### Observed flow" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "54555e66", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-02-24 00:24:26.270 | DEBUG | catchment:readDischargeGauges:781 - Gauges data are read successfully\n" + ] + } + ], + "source": [ + "Coello.readDischargeGauges(Path + \"Qout_c.csv\", fmt=\"%Y-%m-%d\")" + ] + }, + { + "cell_type": "markdown", + "id": "60f825cc-49ee-4680-b8cb-901bd11774ec", + "metadata": {}, + "source": [ + "- the discharge data should be stored in the text file with the date stored in the first column and the discharge values in the second column" + ] + }, + { + "cell_type": "markdown", + "id": "894ecdc8", + "metadata": {}, + "source": [ + "### Routing" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "f80b814a", + "metadata": {}, + "outputs": [], + "source": [ + "# RoutingFn = Routing.TriangularRouting2\n", + "RoutingFn = Routing.Muskingum_V\n", + "Route = 1" + ] + }, + { + "cell_type": "markdown", + "id": "560380a3-6dd5-44a5-b9c4-8d65e53d5a5f", + "metadata": {}, + "source": [ + "### Run The Model" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "c4f9c7fc-c087-4fef-be5c-f970e1f13f68", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model Run has finished\n" + ] + } + ], + "source": [ + "Run.runLumped(Coello, Route, RoutingFn)" + ] + }, + { + "cell_type": "markdown", + "id": "3b30a30b", + "metadata": {}, + "source": [ + "### Calculate performance criteria" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "7e1a0414", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE= 24.59\n", + "NSE= 0.12\n", + "NSEhf= 0.21\n", + "KGE= 0.56\n", + "WB= 96.59\n" + ] + } + ], + "source": [ + "Metrics = dict()\n", + "\n", + "# gaugeid = Coello.QGauges.columns[-1]\n", + "Qobs = Coello.QGauges['q']\n", + "\n", + "Metrics['RMSE'] = PC.RMSE(Qobs, Coello.Qsim['q'])\n", + "Metrics['NSE'] = PC.NSE(Qobs, Coello.Qsim['q'])\n", + "Metrics['NSEhf'] = PC.NSEHF(Qobs, Coello.Qsim['q'])\n", + "Metrics['KGE'] = PC.KGE(Qobs, Coello.Qsim['q'])\n", + "Metrics['WB'] = PC.WB(Qobs, Coello.Qsim['q'])\n", + "\n", + "print(\"RMSE= \" + str(round(Metrics['RMSE'], 2)))\n", + "print(\"NSE= \" + str(round(Metrics['NSE'], 2)))\n", + "print(\"NSEhf= \" + str(round(Metrics['NSEhf'], 2)))\n", + "print(\"KGE= \" + str(round(Metrics['KGE'], 2)))\n", + "print(\"WB= \" + str(round(Metrics['WB'], 2)))" + ] + }, + { + "cell_type": "markdown", + "id": "da4641e2", + "metadata": {}, + "source": [ + "### Plot Hydrograph" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "17053377", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "(
,\n )" + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": "
", + "image/png": "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3ooQghkzZrRPxxQKRRAVM7/FsS0HpKTo9ifbuztBKAGlaHEGDhzIO++84/vudDr5+OOP6devXzv2SqFQBOIq3tPeXQiJElARymWXXca//vUv3/d58+bRo0cP3/fs7GyefPJJhg8fTkJCAldeeSUFBQWceOKJJCUlMXHiRPbs8dx8DWav119/nW7dupGVlcXTTz/t25fb7eaxxx6jX79+ZGRkcO6551JaWupb/7///Y/evXuTkZHBI4880mjfJ0+ezMKFC33H//777xk+fDhdu3bVHfPhhx+md+/edO7cmUsuuYTy8vKwjtlYfxUKRZhEeKKG/VJA3f/BUsTk11vkb/KD37fbeXz66afMmTOHjRs38tVXX3HiiSfy73//m+LiYtxuNy+88IKu/S+//MKmTZv48ccfeeyxx3ymxRdeeIHZs2czf/58cnNzSUtL44YbbgBg7dq1XHfddfzvf/8jNzeXkpIScnJyQvYrNjaWU089lVmzZgHw7rvvcskll+jazJgxgxkzZvDLL7+wdetWqqqquPHGG8M6Zqj+KhSKjsN+KaA6CjfddBNdunShe/fuHHHEEYwdO5ZRo0YRExPDGWecwV9//aVrf99995GQkMCBBx7I5ZdfzsyZMwF47bXXeOSRR+jRowcxMTHcf//9fPLJJzidTj755BNOOeUUjjzySGJiYnjooYewWBq/bS655BLeffddysvLmT9/Pqeffrpu/fvvv89tt91G3759SUxM5NFHH2XWrFlhHTNUfxUKRcehw6c66sh06dLF9zkuLi7oe1VVla59z57+Cia9e/dm1apVAOzYsYMzzjhDJwSsVisFBQXk5ubqtktISCAjI6PRvh1++OEUFRXx8MMPc8oppwQFS+fm5tK7d29df5xOZ1jHDNVfhULRcdgvBdT9U0Zz/5SgvIQRRUJCAjU1Nb7v+fn5e73PXbt2MXjwYAB27txJt27dAI/geuuttzjssMOCtsnKymLdunW+7zU1NZSUlIR1vIsuuogHH3yQX375JWhdt27d2LHDX0Rz586d2Gw2unTp0ugxQ/V3+/btYfVNoVBEPsrEFwE4HA7q6up8f06nk5EjR/Ltt99SWlpKfn4+zz333F4f56GHHqKmpoY1a9bw9ttvc9555wFw7bXXcs899/gERlFREV984SnNdfbZZ/P111/z22+/YbfbmT59Om63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\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "gaugei = 0\n", + "plotstart = \"2009-01-01\"\n", + "plotend = \"2011-12-31\"\n", + "Coello.plotHydrograph(plotstart, plotend, gaugei, Title=\"Lumped Model\")" + ] + }, + { + "cell_type": "markdown", + "id": "6193fb9c", + "metadata": {}, + "source": [ + "### Save Results" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "88e8fae6", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-02-24 00:25:14.873 | DEBUG | catchment:saveResults:1366 - Data is saved successfully\n" + ] + } + ], + "source": [ + "StartDate = \"2009-01-01\"\n", + "EndDate = \"2010-04-20\"\n", + "\n", + "Path = SaveTo + \"Results-Lumped-Model_\" + str(dt.datetime.now())[0:10] + \".txt\"\n", + "Coello.saveResults(Result=5, start=StartDate, end=EndDate, Path=Path)" + ] + } + ], + "metadata": { + "kernelspec": { + "name": "pycharm-cd49064f", + "language": "python", + "display_name": "PyCharm (Hapi)" + }, + "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.8.10" + } }, - { - "data": { - "text/plain": "
", - "image/png": "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3ooQghkzZrRPxxQKRRAVM7/FsS0HpKTo9ifbuztBKAGlaHEGDhzIO++84/vudDr5+OOP6devXzv2SqFQBOIq3tPeXQiJElARymWXXca//vUv3/d58+bRo0cP3/fs7GyefPJJhg8fTkJCAldeeSUFBQWceOKJJCUlMXHiRPbs8dx8DWav119/nW7dupGVlcXTTz/t25fb7eaxxx6jX79+ZGRkcO6551JaWupb/7///Y/evXuTkZHBI4880mjfJ0+ezMKFC33H//777xk+fDhdu3bVHfPhhx+md+/edO7cmUsuuYTy8vKwjtlYfxUKRZhEeKKG/VJA3f/BUsTk11vkb/KD37fbeXz66afMmTOHjRs38tVXX3HiiSfy73//m+LiYtxuNy+88IKu/S+//MKmTZv48ccfeeyxx3ymxRdeeIHZs2czf/58cnNzSUtL44YbbgBg7dq1XHfddfzvf/8jNzeXkpIScnJyQvYrNjaWU089lVmzZgHw7rvvcskll+jazJgxgxkzZvDLL7+wdetWqqqquPHGG8M6Zqj+KhSKjsN+KaA6CjfddBNdunShe/fuHHHEEYwdO5ZRo0YRExPDGWecwV9//aVrf99995GQkMCBBx7I5ZdfzsyZMwF47bXXeOSRR+jRowcxMTHcf//9fPLJJzidTj755BNOOeUUjjzySGJiYnjooYewWBq/bS655BLeffddysvLmT9/Pqeffrpu/fvvv89tt91G3759SUxM5NFHH2XWrFlhHTNUfxUKRcehw6c66sh06dLF9zkuLi7oe1VVla59z57+Cia9e/dm1apVAOzYsYMzzjhDJwSsVisFBQXk5ubqtktISCAjI6PRvh1++OEUFRXx8MMPc8oppwQFS+fm5tK7d29df5xOZ1jHDNVfhULRcdgvBdT9U0Zz/5SgvIQRRUJCAjU1Nb7v+fn5e73PXbt2MXjwYAB27txJt27dAI/geuuttzjssMOCtsnKymLdunW+7zU1NZSUlIR1vIsuuogHH3yQX375JWhdt27d2LHDX0Rz586d2Gw2unTp0ugxQ/V3+/btYfVNoVBEPsrEFwE4HA7q6up8f06nk5EjR/Ltt99SWlpKfn4+zz333F4f56GHHqKmpoY1a9bw9ttvc9555wFw7bXXcs899/gERlFREV984SnNdfbZZ/P111/z22+/YbfbmT59Om63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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "gaugei = 0\n", - "plotstart = \"2009-01-01\"\n", - "plotend = \"2011-12-31\"\n", - "Coello.plotHydrograph(plotstart, plotend, gaugei, Title=\"Lumped Model\")" - ] - }, - { - "cell_type": "markdown", - "id": "6193fb9c", - "metadata": {}, - "source": [ - "### Save Results" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "88e8fae6", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-02-24 00:25:14.873 | DEBUG | catchment:saveResults:1366 - Data is saved successfully\n" - ] - } - ], - "source": [ - "StartDate = \"2009-01-01\"\n", - "EndDate = \"2010-04-20\"\n", - "\n", - "Path = SaveTo + \"Results-Lumped-Model_\" + str(dt.datetime.now())[0:10] + \".txt\"\n", - "Coello.saveResults(Result=5, start=StartDate, end=EndDate, Path=Path)" - ] - } - ], - "metadata": { - "kernelspec": { - "name": "pycharm-cd49064f", - "language": "python", - "display_name": "PyCharm (Hapi)" - }, - "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.8.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/examples/hydrological-model/coello/calibration/coello-hrus-distributed-model-calibratation-muskingum.py b/examples/hydrological-model/coello/calibration/coello-hrus-distributed-model-calibratation-muskingum.py index 27181cf96..6e00fee6b 100644 --- a/examples/hydrological-model/coello/calibration/coello-hrus-distributed-model-calibratation-muskingum.py +++ b/examples/hydrological-model/coello/calibration/coello-hrus-distributed-model-calibratation-muskingum.py @@ -8,8 +8,8 @@ from osgeo import gdal from statista.descriptors import rmse -from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBV from Hapi.calibration import Calibration +from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBV from Hapi.rrm.parameters import Parameters as DP path = Comp + "/Coello/HAPI/Data/00inputs/" # GIS/4000/ diff --git a/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap-multiobjective-NSE-NSEHF.py b/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap-multiobjective-NSE-NSEHF.py index e0bc0042b..d17a6fec6 100644 --- a/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap-multiobjective-NSE-NSEHF.py +++ b/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap-multiobjective-NSE-NSEHF.py @@ -15,9 +15,9 @@ import statista.descriptors as metrics from deap import algorithms, base, creator, tools -from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped from Hapi.calibration import Calibration from Hapi.routing import Routing +from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped from Hapi.run import Run # %% Paths diff --git a/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap-multiobjective-NSE-RMSE.py b/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap-multiobjective-NSE-RMSE.py index 53a317810..24153f071 100644 --- a/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap-multiobjective-NSE-RMSE.py +++ b/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap-multiobjective-NSE-RMSE.py @@ -16,9 +16,9 @@ import statista.descriptors as metrics from deap import algorithms, base, creator, tools -from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped from Hapi.calibration import Calibration from Hapi.routing import Routing +from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped from Hapi.run import Run ### Paths diff --git a/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap.py b/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap.py index 099a1fea4..32e593a7f 100644 --- a/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap.py +++ b/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap.py @@ -14,9 +14,9 @@ import statista.descriptors as PC from deap import algorithms, base, creator, tools -from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped from Hapi.calibration import Calibration from Hapi.routing import Routing +from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped from Hapi.run import Run # %% Paths diff --git a/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration.py b/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration.py index 4b208f548..b7ca85cd6 100644 --- a/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration.py +++ b/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration.py @@ -7,9 +7,9 @@ import pandas as pd import statista.descriptors as metrics -from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped from Hapi.calibration import Calibration from Hapi.routing import Routing +from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped from Hapi.run import Run # %% Paths diff --git a/examples/hydrological-model/coello/calibration/coello-totally-distributed-model-calibratation-muskingum.py b/examples/hydrological-model/coello/calibration/coello-totally-distributed-model-calibratation-muskingum.py index fd8dc4b6e..c9f70cf15 100644 --- a/examples/hydrological-model/coello/calibration/coello-totally-distributed-model-calibratation-muskingum.py +++ b/examples/hydrological-model/coello/calibration/coello-totally-distributed-model-calibratation-muskingum.py @@ -4,8 +4,8 @@ from osgeo import gdal from statista.descriptors import rmse -from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBV from Hapi.calibration import Calibration +from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBV from Hapi.rrm.parameters import Parameters as DP # %% Paths diff --git a/examples/hydrological-model/coello/run/coello-distributed-model-run-maxbas.py b/examples/hydrological-model/coello/run/coello-distributed-model-run-maxbas.py index 8033f42f2..44158dec8 100644 --- a/examples/hydrological-model/coello/run/coello-distributed-model-run-maxbas.py +++ b/examples/hydrological-model/coello/run/coello-distributed-model-run-maxbas.py @@ -5,8 +5,8 @@ import pandas as pd from osgeo import gdal -from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBV from Hapi.catchment import Catchment +from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBV from Hapi.run import Run # %% Paths diff --git a/examples/hydrological-model/coello/run/coello-lumped-model-run-maxbas.py b/examples/hydrological-model/coello/run/coello-lumped-model-run-maxbas.py index b29714546..7d40cce18 100644 --- a/examples/hydrological-model/coello/run/coello-lumped-model-run-maxbas.py +++ b/examples/hydrological-model/coello/run/coello-lumped-model-run-maxbas.py @@ -5,9 +5,9 @@ matplotlib.use("TkAgg") import statista.descriptors as metrics -from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped from Hapi.catchment import Catchment from Hapi.routing import Routing +from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped from Hapi.run import Run # %% data diff --git a/examples/hydrological-model/coello/run/coello-lumped-model-run.py b/examples/hydrological-model/coello/run/coello-lumped-model-run.py index 43a15dbde..4ba78d1e0 100644 --- a/examples/hydrological-model/coello/run/coello-lumped-model-run.py +++ b/examples/hydrological-model/coello/run/coello-lumped-model-run.py @@ -5,9 +5,9 @@ matplotlib.use("TkAgg") import statista.descriptors as PC -from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped from Hapi.catchment import Catchment from Hapi.routing import Routing +from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped from Hapi.run import Run # %% data diff --git a/examples/hydrological-model/old examples Hapi 0.3.0/02calib_model_HRU.py b/examples/hydrological-model/old examples Hapi 0.3.0/02calib_model_HRU.py index 5ac974712..4c0cd2561 100644 --- a/examples/hydrological-model/old examples Hapi 0.3.0/02calib_model_HRU.py +++ b/examples/hydrological-model/old examples Hapi 0.3.0/02calib_model_HRU.py @@ -27,8 +27,8 @@ # import Wrapper # import Hapi.GISpy as GIS import Hapi.gis.giscatchment as GC -import Hapi.rrm.parameters as DP import Hapi.rrm.hbv as HBV +import Hapi.rrm.parameters as DP import Hapi.sm.performancecriteria as PC # functions diff --git a/examples/hydrological-model/old examples Hapi 0.3.0/02calib_model_Lumped.py b/examples/hydrological-model/old examples Hapi 0.3.0/02calib_model_Lumped.py index 622a1649a..3f0b77899 100644 --- a/examples/hydrological-model/old examples Hapi 0.3.0/02calib_model_Lumped.py +++ b/examples/hydrological-model/old examples Hapi 0.3.0/02calib_model_Lumped.py @@ -5,6 +5,7 @@ # The HBVLumped module exists in the `examples/conceptual-model` # import Hapi.rrm.hbvlumped as HBVLumped import statista.descriptors as PC + from Hapi.calibration import Calibration from Hapi.routing import Routing diff --git a/examples/plot/image_plot.ipynb b/examples/plot/image_plot.ipynb index d01138c9f..620d2c0b2 100644 --- a/examples/plot/image_plot.ipynb +++ b/examples/plot/image_plot.ipynb @@ -1,717 +1,717 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "7d3d8d94-59e7-49a1-976f-80ca52b5db0c", - "metadata": {}, - "source": [ - "# Libraries" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "1df348b6-3d85-4fcf-8d90-b246b3f32d0b", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import sys\n", - "os.chdir(\"F:/01Algorithms/Hydrology/HAPI/Examples\")\n", - "sys.path.append(\"F:/01Algorithms/Hydrology/HAPI\")\n", - "\n", - "from Hapi.visualizer import Visualize as vis\n", - "import gdal\n", - "import pandas as pd" - ] - }, - { - "cell_type": "markdown", - "id": "77e13596-6ead-4a5c-98ac-53c4e5d3449c", - "metadata": {}, - "source": [ - "## Paths" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "82eec035-5d7e-4319-9664-c729c2c90009", - "metadata": {}, - "outputs": [], - "source": [ - "RasterAPath = \"data/GIS/Hapi_GIS_Data/acc4000.tif\"" - ] - }, - { - "cell_type": "markdown", - "id": "661539aa-2cf9-4d15-b49b-48f4c640a59a", - "metadata": {}, - "source": [ - "To plot the array you need to read the raster using gdal " - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "9232c229-6bc4-4fc0-86a7-3b44dac22d65", - "metadata": {}, - "outputs": [], - "source": [ - "# read the raster\n", - "src = gdal.Open(RasterAPath)" - ] - }, - { - "cell_type": "markdown", - "id": "71dceaac-8dae-4966-9795-d5e5fe9e22f0", - "metadata": {}, - "source": [ - "- then using all the default parameters in the PlotArray method you can directly plot the gdal.Dataset" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "ff6856eb-3951-4082-adfe-66175fd0edd6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(
,\n", - " )" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" + "cells": [ + { + "cell_type": "markdown", + "id": "7d3d8d94-59e7-49a1-976f-80ca52b5db0c", + "metadata": {}, + "source": [ + "# Libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "1df348b6-3d85-4fcf-8d90-b246b3f32d0b", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import sys\n", + "os.chdir(\"F:/01Algorithms/Hydrology/HAPI/Examples\")\n", + "sys.path.append(\"F:/01Algorithms/Hydrology/HAPI\")\n", + "\n", + "from Hapi.visualizer import Visualize as vis\n", + "import gdal\n", + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "id": "77e13596-6ead-4a5c-98ac-53c4e5d3449c", + "metadata": {}, + "source": [ + "## Paths" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "82eec035-5d7e-4319-9664-c729c2c90009", + "metadata": {}, + "outputs": [], + "source": [ + "RasterAPath = \"data/GIS/Hapi_GIS_Data/acc4000.tif\"" + ] + }, + { + "cell_type": "markdown", + "id": "661539aa-2cf9-4d15-b49b-48f4c640a59a", + "metadata": {}, + "source": [ + "To plot the array you need to read the raster using gdal " + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "9232c229-6bc4-4fc0-86a7-3b44dac22d65", + "metadata": {}, + "outputs": [], + "source": [ + "# read the raster\n", + "src = gdal.Open(RasterAPath)" + ] + }, + { + "cell_type": "markdown", + "id": "71dceaac-8dae-4966-9795-d5e5fe9e22f0", + "metadata": {}, + "source": [ + "- then using all the default parameters in the PlotArray method you can directly plot the gdal.Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "ff6856eb-3951-4082-adfe-66175fd0edd6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(
,\n", + " )" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "vis.PlotArray(src)" + ] + }, + { + "cell_type": "markdown", + "id": "90b31c15-b50e-4a40-bc6a-927abb573e03", + "metadata": {}, + "source": [ + "However as you see in the plot you might need to adjust the color to different color scheme or the \n", + "display of the colorbar, colored label. you might don't need to display the labels showing the values\n", + "of each cell, and for all of these decisions there are a lot of customizable parameters " + ] + }, + { + "cell_type": "markdown", + "id": "a66eabf0-a492-4851-b048-70df7baef218", + "metadata": {}, + "source": [ + "# Basic Figure features" + ] + }, + { + "cell_type": "markdown", + "id": "acb5cc20-e27c-4484-ad5b-8fb5be3e09c3", + "metadata": {}, + "source": [ + "first for the size of the figure you have to pass a tuple with the width and height\n", + "\n", + "- Figsize : [tuple], optional\n", + " figure size. The default is (8,8).\n", + "- Title : [str], optional\n", + " title of the plot. The default is 'Total Discharge'.\n", + "- titlesize : [integer], optional\n", + " title size. The default is 15." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "dbae759b-ecce-43e9-9c00-8fa5b9887209", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(
,\n", + " )" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "Figsize=(8, 8)\n", + "Title='Flow Accumulation map'\n", + "titlesize=15\n", + "\n", + "vis.PlotArray(src, Figsize=Figsize, Title=Title, titlesize=titlesize)" + ] + }, + { + "cell_type": "markdown", + "id": "70ead98a-efe9-42c9-8251-8bc87dfac0ab", + "metadata": {}, + "source": [ + "# Color Bar" + ] + }, + { + "cell_type": "markdown", + "id": "d2530b93-266c-4aaa-9e74-fd9321c077a6", + "metadata": {}, + "source": [ + "- Cbarlength : [float], optional\n", + " ratio to control the height of the colorbar. The default is 0.75.\n", + "- orientation : [string], optional\n", + " orintation of the colorbar horizontal/vertical. The default is 'vertical'.\n", + "- cbarlabelsize : integer, optional\n", + " size of the color bar label. The default is 12.\n", + "- cbarlabel : str, optional\n", + " label of the color bar. The default is 'Discharge m3/s'.\n", + "- rotation : [number], optional\n", + " rotation of the colorbar label. The default is -90.\n", + "- TicksSpacing : [integer], optional\n", + " Spacing in the colorbar ticks. The default is 2." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "90060ea7-a648-4f31-8d18-6d81986d7314", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(
,\n", + " )" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "Cbarlength=0.75\n", + "orientation='vertical'\n", + "cbarlabelsize=12\n", + "cbarlabel= 'cbar label'\n", + "rotation=-20\n", + "TicksSpacing=10\n", + "\n", + "vis.PlotArray(src, Cbarlength=Cbarlength, orientation=orientation,\n", + " cbarlabelsize=cbarlabelsize, cbarlabel=cbarlabel, rotation=rotation,\n", + " TicksSpacing=TicksSpacing)" + ] + }, + { + "cell_type": "markdown", + "id": "7bebebc2-a2f6-44d2-955b-781b66dbc89d", + "metadata": {}, + "source": [ + "# Color Schame" + ] + }, + { + "cell_type": "markdown", + "id": "9c54a8ea-b662-4b0b-9bba-07054e6957e6", + "metadata": {}, + "source": [ + "- ColorScale : integer, optional\n", + " there are 5 options to change the scale of the colors. The default is 1.\n", + " 1- ColorScale 1 is the normal scale\n", + " 2- ColorScale 2 is the power scale\n", + " 3- ColorScale 3 is the SymLogNorm scale\n", + " 4- ColorScale 4 is the PowerNorm scale\n", + " 5- ColorScale 5 is the BoundaryNorm scale\n", + " ------------------------------------------------------------------\n", + " gamma : [float], optional\n", + " value needed for option 2 . The default is 1./2..\n", + " linthresh : [float], optional\n", + " value needed for option 3. The default is 0.0001.\n", + " linscale : [float], optional\n", + " value needed for option 3. The default is 0.001.\n", + " midpoint : [float], optional\n", + " value needed for option 5. The default is 0.\n", + " ------------------------------------------------------------------\n", + "- cmap : [str], optional\n", + " color style. The default is 'coolwarm_r'." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "964b8193-36d2-48c3-92f0-be20e54bf799", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(
,\n", + " )" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# for normal linear scale\n", + "ColorScale = 1\n", + "cmap='terrain'\n", + "vis.PlotArray(src, ColorScale=ColorScale,cmap=cmap, TicksSpacing=TicksSpacing)" + ] + }, + { + "cell_type": "markdown", + "id": "2d49ef17-0da5-4add-a92b-c6f35d1aef61", + "metadata": {}, + "source": [ + "### Power Scale\n", + "\n", + "- The more you lower the value of gamma the more of the color bar you give to the lower value range" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "3484624a-9e7c-4ba8-94a2-24414dbe874b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(
,\n", + " )" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ColorScale = 2\n", + "gamma=0.5\n", + "\n", + "vis.PlotArray(src, ColorScale=ColorScale, cmap=cmap, gamma=gamma,\n", + " TicksSpacing=TicksSpacing)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "cac5cf1e-7145-4328-81ab-dd438d5e862f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(
,\n", + " )" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAAFvCAYAAADZmst1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAeB0lEQVR4nO3de7xcZXno8d+TEO4iYgSjgNGKinCO2GwtiFUU4RNvhLbCQSsGRbEXOWp7KogKKEpBjx6PHFqbWiRFtEQUCVqUGIweLSh7e0dQgXIJRCBc5CqX7Kd/rLVx1uy9M7MvayaT9ft+Puszs9asd953NuLD8673EpmJJElNNaffDZAkqZ8MhJKkRjMQSpIazUAoSWo0A6EkqdEMhJKkRjMQ6jERkV0cB3T4jsMj4qhp1n9yRKzvcM9RLW0ZjYjfRsRPI+KTEfEHk/ymd0ynPZPUf3ZEDM/W90nqvy363QBtUvZreb8NcCnwYeBrLdd/0eE7DgfmA2fPasvGeznwILA9sBfwduBtEfG6zLy45b79gP+suS2SBpiBUI/JzMvH3kfE9uXba1uvb0KuyMz7yvffjIhPA18FPh8RCzPzt1D9TZu6iJgHjGbmhn63RWoSu0bVtYiYW3Zf3hgRD0XElRHxhpbPzwb+DHhpS/flyeVnr46IVRFxW0TcExGXR8TBs9W2zHwIOBbYEXh9S5sqXaMR8eKI+P9lG+6JiB9HxGFtv/NtEfGziPhdRNwaEedHxOPb7jmo7JK9PyK+GxF7tX3+txFxRdl1e2tEXBQRz2y7Z0353cdExLXA74CnROGUlr/VWRFxRPlbFraU3zoiPhoRN5X/PH4SEa+a8R9TahgDoabiQ8D7gGXAIcD3gHMjYizwnAJ8C/gRRZfkfsBnys+eDlwEHEkRLP8DuDgi9p+txmXm1cBaYN+JPo+IHSiyxuvKNrwOOIcieI7d837gn4BvA4cCfwn8lqILdszuwMeAj1AE3Z2BFRERLffsCvw/YAnwNmAu8L32gArsX9ZxHPDasq53AScAny7b+CDw0Ql+0vnAUcCpZdkrgJURsc9Ev1/SJDLTw2PcQfF//AkcVZ7vBNwPnNR2378Dv2w5Px9Y0+G751B0y38DOKvl+snA+g5ljyrbtf0kn18GXNxynsA7yvdD5fnjJim7I/AA8ImN1H828CiwR8u1Q8vvfc4kZeZSPHO9F3hTy/U1FEHuyW33rgPOnODvnMDC8vzA8vylbfd9B/hiv//34+ExSIcZobq1N7At8MW26+cBz4qInTdWOCJ2jYjlEXEzRSB5BDgYeNYstzM28tm1wH0UzxGXRMSObZ/vRxGwPtuhjusz89ct52MDiHZ9rBER+5ZdwXdQ/N4HKP7jov33jmTmb1rOdwOeDKxsu6/9/BXAbyiyzC3GDmA1RcCX1CUDobq1oHy9te362PkTJisYEXMo/o/8RcCJwMuAFwAXA1vPbjN56gRtBCAz76IIvvOAFcDtEfG1iHhGecsTy9d1Heq4u+384fJ1a4CI2B24hCIov52i+/MFwG2M/73tbX1y+Xp72/X28/nlvY+0HSdTBFNJXXLUqLo1Fhx2Bu5oub5L+XrnRso+E3g+8MrM/PrYxYjYZjYbGBF7UmRll012T2ZeBiwu634F8Ang8xTPFcd+1wJgo/MZO1hMkT0vycz7y7ZtQdG9PK5Jbedj2eGT2q63n98J3EzRLStpBswI1a2fU3TvHdZ2/XDgV5k5lrE8zPisZyzgPTR2ISKeRpEpzYqI2Ar4FEW29m+d7s/MBzPzIuAs4Lnl5csontktnWFztgFGKbpExxxOd//heRNFMFzSdv2QtvPVFBnhfZk53H5Ms91SI5kRqiuZeWdEfBJ4f0Q8CgwDfwq8ipbpCsDVwJKIOJRiBOct5bW1wMcj4gPA44APUmQ00/WCiHiQIvPam6ILciHwuiznELaLiFcDbwG+AtxI0Y36doqFA8jMuyPiFOAjEbElxQCVrYBXAx/MzG7beynFoJfPRsS/UEz4/1+M71IdJzM3RMTHgI9FxO0UI3MPAf5becto+bqKYrDRqog4HbgS2AHYB9g6M9/bZVulxjMQaipOpMhy/pKiS/Qa4I2Z2ZqB/QNFN+hZFM8NP5iZJ0fEnwJnUowqXUsx9eAAiiA2HZeWr/cB1wPfBD6VmddupMw1FF2Rp1J08d5OMZ3ihLEbMvPvI+JO4J0UQfIuipGY93bbsMz8WUS8GTgJ+BPgJxSZ9HldfsX/ofjb/RXwNxTPV0+l+NveU9aR5d/0BIrpFrtTdJf+GDij27ZKgshsf0QhaVMTEZ8BDsrMp/W7LdLmxoxQ2sRExN7A/6BYdGAUeCXwZopJ95JmmRmhtImJiKdTdC3vA2wH3ECx2s3H039hpVlnIJQkNZrTJyRJjWYglCQ12pQGy8yfPz8XLlxYU1MkSVMxMjKyPjPbVx3SFE0pEC5cuJDhYRetkKRNQUTc0O82bA6cPiFJqli8eHGuXz/95XZHRka+kZmLZ7FJtTIQSpIq1q9fP6Pev4iYP4vNqZ2BUJI0zuiGDf1uQs8YCCVJFZnJ6Oho5xs3EwZCSdI4TcoInUcoSWo0M0JJUlUmo6PNyQgNhJKkigRGN/iMUJLUVGaEkqQmy8zaB8tExLuBt1IkoD+j2HNzW+A8YCFwPXB4Zt5Va0NwsIwkqcci4qnA/wSGMnNvYC5wBHA8sDoz9wBWl+e1MxBKksYZHR2d9tGlLYBtImILikzwFmAJsLz8fDlw6Gz/rskaIknSY+ruGs3MmyPifwM3Ag8Cl2TmJRGxS2auK+9ZFxE719aIFgZCSdI4MwyE8yOidbHSZZm5bOwkIp5Akf09Hbgb+GJEvHEmFc6EgVCSVDXzJdbWZ+bQRj5/BfCfmXk7QER8GXgRcGtELCizwQXAbTNpRLd8RihJ6rUbgX0jYtuICOBA4CpgJbC0vGcpcGEvGmNGKEmqKCbU1/qM8PsRcT7wQ+BR4EfAMmB7YEVEHE0RLA+rrREtDISSpKoeTKjPzJOAk9ouP0SRHfaUgVCSVJHUP6F+U+IzQklSo5kRSpKqEjfmlSQ1WbO6Rg2E6trQ0LLON6liePiYfjdBmrLMZu1QbyCUJLWZ8YT6geJgGUlSo5kRSpIq6u4ajYhnU+w7OOYZwInAv+J+hJKk/ism1E/36Pjtmb/MzH0ycx9gEfAAcAF92o/QjFCSVJUwuqFnzwgPBK7NzBsiYglwQHl9ObAGOK7uBhgIJUkVSf1LrLU4AvhC+b4v+xHaNSpJmm3zI2K45ZhwHlFEbAkcAnyxt82rMiOUJFXNfLBMp/0Ix7wS+GFm3lqeux+hJKn/spxHON1jCl7P77tFwf0IJUmbhB6sLBMR2wIHAW9vuXwa7kcoSWqCzHwAeGLbtTtwP0JJUv+56LYkqcHSbZgkSc1mRihJarDMnk6o7zunT0iSGs2MUJI0Tg/XGu07A6EkqaphXaMGQklSRVL/hPpNiYFQklSV2ajpEw6WkST1XETsGBHnR8TVEXFVROwXETtFxKqI+HX5+oRetMVAKEmqGOsane7Rpf8LfD0znwM8D7gKd6iXJG0Sst4J9RGxA/AS4KiiunwYeNgd6iVJm4yanxE+A7gd+GxEPA8YAd6JO9RLkjYTnXao3wL4Q+AfM/P5wP30qBt0ImaE6trIsUtqr2PRGT3Zh5OR0x/pST3SIMqZd4122qF+LbA2M79fnp9PEQjdoV6StAkoJ9RP9+j89fkb4KaIeHZ56UDgF7hDvSRpU9CjCfXHAudGxJbAdcCbKZIzd6iXJPVZDybUZ+aPgYm6T3u+Q71do5KkRjMjlCSN41qjkqTGmoVRowPFQChJGqdJi24bCCVJFU3LCB0sI0lqNDNCSdI47lAvSWquTEY3+IxQktRQSbMyQp8RSpIazYxQklTVsFGjBkJJUkXRNVrvM8KIuB64F9gAPJqZQxGxE3AesBC4Hjg8M++qtSHYNSpJaldmhNM9puBlmblPy96FxwOrM3MPYDU92qzXjFCSVJH0rWt0CXBA+X45sAY4ru5KzQglSbNtfkQMtxzHTHBPApdExEjL57tk5jqA8nXnXjTWjFCSVJUzfka4vqW7czL7Z+YtEbEzsCoirp5JhTNhIJQktam/azQzbylfb4uIC4AXArdGxILMXBcRC4Dbam1Eya5RSVJFZjGhfrpHJxGxXUQ8buw9cDDwc2AlsLS8bSlwYU0/scKMUJLUpvYl1nYBLogIKOLQ5zPz6xFxBbAiIo4GbgQOq7MRYwyEkqSeyszrgOdNcP0O4MBet8dAKEmqGOsabQoDoSSpjUusaRYNDS3rdxNmz+mP9KCSeT2oA57z5F/1pJ7N6Z//8PBEU8G0WZr59ImB4qhRSVKjmRFKkir6uMRaXxgIJUlViYFQktRcSTbqGaGBUJJU1bCM0MEykqRGMyOUJLVJJ9RLkporE9JnhJKkpoqAOXOb8+SsOb9UkqQJmBFKksaZMzdqryMi5gLDwM2Z+ZqI2Ak4D1gIXA8cnpl31d0OM0JJUkUEzJkT0z6m4J3AVS3nxwOrM3MPYHV5XjsDoSSpTTBn7vSPrmqI2BV4NfCZlstLgOXl++XAobP5qyZj16gkqarMCGv2SeA9wONaru2SmesAMnNdROxcdyPAjFCSNPvmR8Rwy1HZwysiXgPclpkjfWpfhRmhJKkimPFgmfWZObSRz/cHDomIVwFbAztExOeAWyNiQZkNLgBum0kjumVGKEmqqnmwTGa+NzN3zcyFwBHApZn5RmAlsLS8bSlwYV0/sZUZoSSpYhYywuk6DVgREUcDNwKH9aJSA6EkqSqmPA1i2jJzDbCmfH8HcGBPKm5h16gkqdHMCCVJ4/Spa7QvDISSpIpi0W0DoSSpwXr1jHBT4DNCSVKjmRFuBu5ffmVP6nlOT2rZqye17DZvXk/qWXX6I7XXsei43vwWNYddo5KkhgvmzGlOh6GBUJJUZUYoSWqywMEykiQ1hhmhJKnKrlFJUpNFdL/T/ObAQChJGqdJzwgNhJKkiqbNI3SwjCSp0cwIJUnj2DUqSWquhnWNGgglSRVBvTvUR8TWwHeArSji0PmZeVJE7AScBywErgcOz8y7amtIyWeEkqReewh4eWY+D9gHWBwR+wLHA6szcw9gdXleOzNCSVJVzV2jmZnAfeXpvPJIYAlwQHl9ObAGOK62hpQMhJKkil6sNRoRc4ER4JnAmZn5/YjYJTPXAWTmuojYudZGlAyEkqSqgDlzZ/TkbH5EDLecL8vMZa03ZOYGYJ+I2BG4ICL2nkmFM2EglCS1mfESa+szc6ibGzPz7ohYAywGbo2IBWU2uAC4bSaN6JaDZSRJPRURTyozQSJiG+AVwNXASmBpedtS4MJetMeMUJJUEVH7M8IFwPLyOeEcYEVmfjUiLgNWRMTRwI3AYXU2YoyBUJI0Ts2jRn8KPH+C63cAB9ZW8SQMhJKkih5khJsUA6EkaZxBXGItInYA9gOeCNwBXJaZ93QqZyCUJA28iHg38EFga2A9MB94KCJOysxPbKysgVCSVBX1rjU62yLi9cB7gKOAr2TmaETMAQ4F/iEifpOZn5+svIFQklQRDFzX6N8Af5GZj023yMxR4MsRsQF4P2Ag3Jxtt3SvntTz0Us7drXP2Htqr6Fw5xue1ZN6vrSq9oXz+bNjj6q9DjXM4A2WeQ5wySSfXQJ8bmOFnVAvSRp09wKPTPLZw8BG/yvejFCSVDGAXaMjwEHAxRN8thj48cYKmxFKkqrKbZime/TBR4CXTvLZS4BTN1bYjFCS1GawRo1m5uXA5ZN81nE/QzNCSVJFDFhGGBFbRcQpEfHriHggIq6JiA9FxJbdlDcjlCQNutOBIeBY4AZgd+AkYAfgXZ0KGwglSePMmTNQHYaHA/89M9eX51eVGwP/FAOhJGmqxrpGB0hO8XqFgVCS1GawBssAK4ALIuIUiq7Rp1F0jX6xm8IGQklS1eBlhMcB7wM+DTwFuAU4B/hwN4UNhJKkgZaZD1NkgCdNp7yBUJJUMWjPCCNissn0FZn57YmuGwglSeMM2DPCc7q4J4DdJvrAQChJqhi0jDAzd59JeQOhJGngRcQ84I8oBsusAy7LzEe7KWsglCS1GazpExGxJ7AS2A64iaIL9P6IeG1mXt2p/EAtHSBJ6oEBW2sU+EfgnzPzKZn5R5n5FOAz5fWODISSpIqgGCwz3aPj90fsFhHfioirIuLKiHhneX2niFhVLp69KiKe0GWT9wE+0Xbt4+X1jgyEkqSq+jPCR4G/zcw9gX2Bv46I5wLHA6szcw9gdXnejbXAi9uu/XF5vSOfEUqSeioz11EMaCEz742Iq4CnAkuAA8rblgNrKFaN6eQE4MKI+CpwI8USa68B/ryb9pgRSpIqZqFrdH5EDLccx0xaV8RC4PnA94FdyiA5Fix37qa9mbmSYhumXwI7AVcDizLzom7KmxFKkqpixoNe1mfmUOdqYnvgS8C7MvOeiOnXmZm/Bj40nbIGQknSOHPm1tthWM77+xJwbmZ+ubx8a0QsyMx1EbEAuK3L7zqLIpEdJzPf3Km8XaOSpIqI2keNBvAvwFWZ2TracyWwtHy/FLiwyyavpZg/eFP5PoBDgQe7KdzYjHBoaFm/mzBwXrz99v1uwsA59aBuR39P37XfW1F7HYVje1SPGmB/4EjgZxHx4/LaCcBpwIqIOJpi0Mth3XxZZp7Yfi0i9gU+0E35xgZCSdLk6pwYn5nfZZKuTODAWarj8oh4STf3GgglSRURg7XE2kQiYktgSUTMyczRjd1rIJQkjTNIu09MpNys99Ju7nWwjCSp0cwIJUkVY6NGm8JAKEkaZ9C7RqfCQChJqhqwjDAiLmXyUaiPycyXTXTdQChJqgj6tq/gdF1GMS/xc/x+Y94jgXOAazoVNhBKkgbdK4CDW3ejj4hzgLMz84ROhQ2EkqSqGLhnhM+mWImm1fXl9Y6cPiFJqqh7h/oarAHOjog9I2LbiNiTolv0W90UNhBKkqrq36F+tr0FeAj4EXBf+fog0HHnCbBrVJI0gZzB3oC9lpl3AkdGxJuA+RT7IWa35Q2EkqSBFhHbAW+iyAbPnUoQBAOhJKlNAo9OLZb027nA7sBWwF7A8RFxFPCqzDy8U2EDoSSpYgAD4cuBpwJPoFho+3hgBfD33RQ2EEqSKgYwEN4BjGbmjRExv7z2CLB1N4UdNSpJGnQfAD4WEY8HMiJ2BE4HftJNYTNCSVJF5sBlhMvL17+gSGjvpAiCf95NYQOhJGmcR/vdgKnZo+V9UkyfuLfbwgZCSVJFkgOVEWbmdTMpbyCUJFUM2mCZiPjsZJ9lZsfVZRwsI0kadDe1HGsplks9lGKZtY7MCCVJFYOWEWbmie3XImJfitGkHRkIJUkVgxYIJ5KZl0fES7q5d5MMhENDy2qvY+TYJbXX0SsPHXlBT+r51Q9uq72O1/3htbXXAfDe/T/ak3oWnXFh7XXsOm9e7XWoeQZs1Og4EbElsCQi5mTm6Mbu3SQDoSRJM5GZD1Mst9aRgVCSVDGAE+pnxEAoSaoYtHmEM2UglCRVbA6DZabCQChJqhi0QBgRl1LMHdyozHzZRNcNhJKkQfe5mRQ2EEqSxhmk6ROZedZMyhsIJUkVA9g1+lzgJOBe4L2ZeXtE/AGQ3SzI7VqjkqSKsekT0z364F+Bu4FtgE+V1xYC/9xNYTNCSVJFL6ZPRMRZwGuA2zJz7/LaTsB5FEHseuDwzLyri697FvBCYAfg5+W1b5ff1ZEZoSSpH84GFrddOx5YnZl7AKvL825cAyzIzLuB7ctrjwc2urTaGAOhJKli7BlhnV2jmfkd4M62y0uA5eX75RRbKXXjHOC8iFgCzC1fvwRc0k1hu0YlSeP0adToLpm5DiAz10XEzl2We3f5egZFcD2Romv05G4KGwglSRWzMGp0fkQMt5wvy8zathXKzN1nUt5AKEmabeszc2ga5W6NiAVlNrgAqH/vNwyEkqQ2fdx9YiWwFDitfO1qQ8+IuI7ullh7+kTXDYSSpIpeTKiPiC8AB1B0o66lmBB/GrAiIo4GbgQO6/Lr/gl4A3AmcBOwK3As8HngB50KGwglSRW9mEeYma+f5KMDp/F1bwIOzsybxy5ExNeAVZl5WqfCBkJJUkUyWGuNAguAB9uuPQA8uZvCziOUJA26rwBfiYhXRsRzI+KVwFfL6x2ZEUqSxhmkRbeBvwLeR7HO6FOAW4AvAB/uprCBUJJUMWi7T2Tm74APlMeUGQglSRV9nD4xbRGxCHgbsBtwA/CZzPxhN2V9RihJqujFWqOzKSIOBr5MEQBfCtwOXBwRr+mmvBlhzVb/yTm11/HWG+6ovQ6AX7xjwrmos2rk9CfWXgfAmas6jqieFTse0e1SidP3ohf25m/2/cs/XXsdD/9uQ+11APzxAfNqr2N4+Jja69BjPgwclpk/iIi/y8yTIuIiiv0Iv9qpsIFQklQxgNMnnpmZ7RPnRyj2NezIQChJatO3nean68GI2C4z7+f3S629Ebiym8IGQklSxaCNGgW+S/Fs8N+BeRFxNbAVcEg3hQ2EkqRB95aW90dTzCO8PDMf6aawgVCSVDFoGWHZJTr2/rypljcQSpIqBm0eodswSZJm1QCOGn3rTAobCCVJ4wxSRpiZl86kvCvLSJIazYxQklTRi415NyUGQklSxaCNGp0pA6EkqcJAKElqtAEcNTojDpaRJDWaGaEkqWrAJtTPlIFQklThM0JJUqM1bfqEzwglSY1mRihJqrBrVJLUaE2bPmEglCRVmBFKkpqtYdMnHCwjSWo0M0JJUoVdo5KkRmvaPMLGBsIjX/LJntTz1zc9UHsd2y3dq/Y6AEaOXVJ/JWvrrwLgrG9e2JuKeuDvjrynJ/Vsce6R9Vey6/n11wE88h9H9aSeQeWoUUlSozWta9TBMpKkRjMjlCSN06SM0EAoSarIhs0jNBBKkip8RihJUoOYEUqSKpw+IUlqNCfUS5Iaz0AoSWosB8tIktQgZoSSpArnEUqSGs1Ro5KkRmvaM0IDoSSpTbOmTzhYRpLUaGaEkqQKu0YlSQ0XZM7rdyN6xkAoSarKgNEt+92KnvEZoSSp0cwIJUlt5jQqIzQQSpKqGtY1aiCUJLUxEEqSGs1AOKmrrrqdoaFldbXlMfcvv7L2Os657lm11wGw6LjNZwjyojMurL2O4eFjaq8DYOiMnlTDyLFLaq/jiF3Pr70OgK+tvaj2Orb97ZNqrwNg3xedXXsdvfjf8qJFixbVXkkDmBFKkqp8RihJajZHjUqSmqxhGaET6iVJjWZGKElq06yM0EAoSarKgA0GQklSY82BNBBKkhqrWV2jDpaRJDWaGaEkqaph0ycMhJKkNgZCSVKjGQglSU2WzVpizcEykqRGMyOUJLWxa1SS1GSuLCNJarZo1MoyPiOUJDWaGaEkqY3PCCVJTdaw6RMGQklSlYNlJEnN1qyuUQfLSJIazYxQktSmWdMnDISSpKoM2DC3363omU0yEF49fEK/mzBrhod36XcTNIHh4WP63YRZMzQ0ryf1vPrY19Zex6JTL6y9Dth8/vmPjIyM1PXdc0ZHp112+iX7Y5MMhJKkPsokNmzodyt6xsEykqRGMyOUJLVpVkZoIJQkVUTO7BnhoDEQSpLaNCsj9BmhJKnRzAglSVVJozJCA6EkqSJInxFKkhrMjFCS1GhOqJckqTnMCCVJ4/iMUJLUWNGwrlEDoSSpjYFQktRkDVtizcEykqRGMyOUJLWxa1SS1GDhhHpJUrM1a4k1nxFKkhrNjFCSVGXXqCSp2RwsI0lqsGjYPEIDoSSpjRnhpPbc80kMDx9TV1seMzS0rPY6emZp/X8vNVsv/p3sGf99UR+YEUqSqhwsI0lqsmjYPEIDoSSpyoxQktRoDduP0JVlJEmNZkYoSRrHZ4SSpMaKhnWNGgglSW2aFQh9RihJajQzQklSlWuNSpKarVldowZCSVJFOKFektRszVpizcEykqRGMyOUJFXZNSpJajQn1EuSmixw+oQkqckalhE6WEaS1GgGQklSmyIjnO7RjYhYHBG/jIhrIuL4mn/QRtk1KkmqiJqXWIuIucCZwEHAWuCKiFiZmb+ordKNMBBKktrU/ozwhcA1mXkdQET8G7AE6EsgtGtUktRrTwVuajlfW17rCzNCSVLFAw/c+I2RkbfPn8FXbB0Rwy3nyzJzWct5TFAmZ1DfjBgIJUkVmbm45irWAru1nO8K3FJznZOKzO6DcETcDtxQX3MkSVPwtMx8Ur8bMVURsQXwK+BA4GbgCuANmXllP9ozpYxwEP/gkqRNS2Y+GhHvAL4BzAXO6lcQhClmhJIkbW4cNSpJajQDoSSp0QyEkqRGMxBKkhrNQChJajQDoSSp0QyEkqRGMxBKkhrtvwBblYt6lx1y5wAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "vis.PlotArray(src, ColorScale=ColorScale, cmap=cmap, gamma=0.4,\n", + " TicksSpacing=TicksSpacing)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "5529a008-4c29-43dd-86b1-2561d50589d1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(
,\n", + " )" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "vis.PlotArray(src, ColorScale=ColorScale, cmap=cmap, gamma=0.2,\n", + " TicksSpacing=TicksSpacing)" + ] + }, + { + "cell_type": "markdown", + "id": "741561d7-2dd7-4331-9706-ba37a1da03cb", + "metadata": {}, + "source": [ + "### SymLogNorm scale" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "c4cbe16d-cf94-4f48-b458-ee925e358b4f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(
,\n", + " )" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ColorScale = 3\n", + "linscale=0.001\n", + "linthresh=0.0001\n", + "vis.PlotArray(src, ColorScale=ColorScale, linscale=linscale, linthresh=linthresh,\n", + " cmap=cmap, TicksSpacing=TicksSpacing)" + ] + }, + { + "cell_type": "markdown", + "id": "151fe0c9-e0de-4d9b-8c07-cffd51ea353a", + "metadata": {}, + "source": [ + "### PowerNorm scale" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "11a32ebe-1e5c-4f41-868b-7ec20c35dbb8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(
,\n", + " )" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ColorScale = 4\n", + "vis.PlotArray(src, ColorScale=ColorScale,\n", + " cmap=cmap, TicksSpacing=TicksSpacing)" + ] + }, + { + "cell_type": "markdown", + "id": "69186f1e-5abb-4096-b9a3-956868544cb1", + "metadata": {}, + "source": [ + "### Color scale 5" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "ffb9af49-d575-48d7-a3e7-fbeafbbcb9ff", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(
,\n", + " )" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ColorScale = 5\n", + "midpoint=20\n", + "vis.PlotArray(src, ColorScale=ColorScale, midpoint=midpoint,\n", + " cmap=cmap, TicksSpacing=TicksSpacing)" + ] + }, + { + "cell_type": "markdown", + "id": "986d8940-910f-4902-aabd-e07b69492d8d", + "metadata": {}, + "source": [ + "# Cell value label\n", + "\n", + "- display_cellvalue : [bool]\n", + " True if you want to display the values of the cells as a text\n", + "- NumSize : integer, optional\n", + " size of the numbers plotted intop of each cells. The default is 8.\n", + "- Backgroundcolorthreshold : [float/integer], optional\n", + " threshold value if the value of the cell is greater, the plotted\n", + " numbers will be black and if smaller the plotted number will be white\n", + " if None given the maxvalue/2 will be considered. The default is None." + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "606f5e96-5389-43ef-a2fc-556b78d8b6cb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(
,\n", + " )" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "display_cellvalue = True\n", + "NumSize=8\n", + "Backgroundcolorthreshold=None\n", + "\n", + "vis.PlotArray(src, display_cellvalue=display_cellvalue, NumSize=NumSize,\n", + " Backgroundcolorthreshold=Backgroundcolorthreshold,\n", + " TicksSpacing=TicksSpacing)" + ] + }, + { + "cell_type": "markdown", + "id": "2795abcf-f32e-4acd-a6fe-3b334378cd16", + "metadata": {}, + "source": [ + "# Plot Points\n", + "\n", + "if you have points that you want to display in the map you can read it into a dataframe \n", + "in condition that it has two columns \"x\", \"y\" which are the coordinates of the points of theand they have to be \n", + "in the same coordinate system as the raster" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "c249032f-419a-4ee6-a24f-c4f334ac02d4", + "metadata": {}, + "outputs": [], + "source": [ + "# read the points\n", + "pointsPath = \"data/GIS/Hapi_GIS_Data/points.csv\"\n", + "points = pd.read_csv(pointsPath)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "be3f0a19-0910-479b-8287-55e44f277f97", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(
,\n", + " )" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "Gaugecolor='blue'\n", + "Gaugesize=100\n", + "IDcolor=\"green\"\n", + "IDsize=20\n", + "vis.PlotArray(src, Gaugecolor=Gaugecolor, Gaugesize=Gaugesize,\n", + " IDcolor=IDcolor, IDsize=IDsize, points=points,\n", + " display_cellvalue=display_cellvalue, NumSize=NumSize,\n", + " Backgroundcolorthreshold=Backgroundcolorthreshold,\n", + " TicksSpacing=TicksSpacing)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.10" + } }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "vis.PlotArray(src)" - ] - }, - { - "cell_type": "markdown", - "id": "90b31c15-b50e-4a40-bc6a-927abb573e03", - "metadata": {}, - "source": [ - "However as you see in the plot you might need to adjust the color to different color scheme or the \n", - "display of the colorbar, colored label. you might don't need to display the labels showing the values\n", - "of each cell, and for all of these decisions there are a lot of customizable parameters " - ] - }, - { - "cell_type": "markdown", - "id": "a66eabf0-a492-4851-b048-70df7baef218", - "metadata": {}, - "source": [ - "# Basic Figure features" - ] - }, - { - "cell_type": "markdown", - "id": "acb5cc20-e27c-4484-ad5b-8fb5be3e09c3", - "metadata": {}, - "source": [ - "first for the size of the figure you have to pass a tuple with the width and height\n", - "\n", - "- Figsize : [tuple], optional\n", - " figure size. The default is (8,8).\n", - "- Title : [str], optional\n", - " title of the plot. The default is 'Total Discharge'.\n", - "- titlesize : [integer], optional\n", - " title size. The default is 15." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "dbae759b-ecce-43e9-9c00-8fa5b9887209", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(
,\n", - " )" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "Figsize=(8, 8)\n", - "Title='Flow Accumulation map'\n", - "titlesize=15\n", - "\n", - "vis.PlotArray(src, Figsize=Figsize, Title=Title, titlesize=titlesize)" - ] - }, - { - "cell_type": "markdown", - "id": "70ead98a-efe9-42c9-8251-8bc87dfac0ab", - "metadata": {}, - "source": [ - "# Color Bar" - ] - }, - { - "cell_type": "markdown", - "id": "d2530b93-266c-4aaa-9e74-fd9321c077a6", - "metadata": {}, - "source": [ - "- Cbarlength : [float], optional\n", - " ratio to control the height of the colorbar. The default is 0.75.\n", - "- orientation : [string], optional\n", - " orintation of the colorbar horizontal/vertical. The default is 'vertical'.\n", - "- cbarlabelsize : integer, optional\n", - " size of the color bar label. The default is 12.\n", - "- cbarlabel : str, optional\n", - " label of the color bar. The default is 'Discharge m3/s'.\n", - "- rotation : [number], optional\n", - " rotation of the colorbar label. The default is -90.\n", - "- TicksSpacing : [integer], optional\n", - " Spacing in the colorbar ticks. The default is 2." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "90060ea7-a648-4f31-8d18-6d81986d7314", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(
,\n", - " )" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "Cbarlength=0.75\n", - "orientation='vertical'\n", - "cbarlabelsize=12\n", - "cbarlabel= 'cbar label'\n", - "rotation=-20\n", - "TicksSpacing=10\n", - "\n", - "vis.PlotArray(src, Cbarlength=Cbarlength, orientation=orientation,\n", - " cbarlabelsize=cbarlabelsize, cbarlabel=cbarlabel, rotation=rotation,\n", - " TicksSpacing=TicksSpacing)" - ] - }, - { - "cell_type": "markdown", - "id": "7bebebc2-a2f6-44d2-955b-781b66dbc89d", - "metadata": {}, - "source": [ - "# Color Schame" - ] - }, - { - "cell_type": "markdown", - "id": "9c54a8ea-b662-4b0b-9bba-07054e6957e6", - "metadata": {}, - "source": [ - "- ColorScale : integer, optional\n", - " there are 5 options to change the scale of the colors. The default is 1.\n", - " 1- ColorScale 1 is the normal scale\n", - " 2- ColorScale 2 is the power scale\n", - " 3- ColorScale 3 is the SymLogNorm scale\n", - " 4- ColorScale 4 is the PowerNorm scale\n", - " 5- ColorScale 5 is the BoundaryNorm scale\n", - " ------------------------------------------------------------------\n", - " gamma : [float], optional\n", - " value needed for option 2 . The default is 1./2..\n", - " linthresh : [float], optional\n", - " value needed for option 3. The default is 0.0001.\n", - " linscale : [float], optional\n", - " value needed for option 3. The default is 0.001.\n", - " midpoint : [float], optional\n", - " value needed for option 5. The default is 0.\n", - " ------------------------------------------------------------------\n", - "- cmap : [str], optional\n", - " color style. The default is 'coolwarm_r'." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "964b8193-36d2-48c3-92f0-be20e54bf799", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(
,\n", - " )" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAAFvCAYAAADZmst1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAeaElEQVR4nO3de9xdVX3n8c83IYAKihrBKGBspYo6I5bUwdp6KegLr6GdQtWqQanYdmrVtlOiVcFraR2dXsZOm1ok9VbQUUFbFBrEjh2wJpZWLVjQcpNwCRcFuYXkN3/s/eCzz5PkOXmenPPksD/v12u/ztnr7HXWOgnw47f2WmunqpAkqa8WLXQHJElaSAZCSVKvGQglSb1mIJQk9ZqBUJLUawZCSVKvGQh1nyQ1xPHsWb7juCTHz7H9U5JsmuWa46f1ZWuS7yf51yR/lOTHt/ObfmMu/dlO+6cnWb+rvk/SwttjoTug3crTp71/AHA+8G7gb6eV/9ss33EcsBQ4fZf2bKafA+4E9gGeBLwOeG2SX6yqc6Zd93TgP0bcF0kTzECo+1TVRVPvk+zTvv3O9PLdyNeq6vb2/d8n+XPg88DHkyyvqu9D9zft7pIsAbZW1ZaF7ovUJw6NamhJFrfDl1cluTvJt5K8fNrnpwP/FXjWtOHLU9rPXpjkvCQ3JPlBkouSPG9X9a2q7gZeD+wHvGxanzpDo0l+Jsn/bfvwgyQXJzl24He+Nsk3ktyV5Pokn0rykIFrntsOyf4wyVeSPGng899O8rV26Pb6JJ9L8riBay5ov/vEJN8B7gIelca7pv1ZnZbkpe1vWT6t/t5J/jDJ1e3fx78kecG8/zClnjEQame8E/g9YA3wEuAfgY8lmQo87wK+BPwzzZDk04EPtZ89Fvgc8EqaYPn/gHOSPGNXda6qLgWuAY7Y1udJHkyTNX637cMvAh+hCZ5T17wV+Avgy8AxwK8B36cZgp1yMPA+4D00QXd/4MwkmXbNgcD/AlYCrwUWA/84GFCBZ7RtnAS8uG3rjcBbgD9v+3gn8Ifb+EmfAo4H3tvW/RpwdpLDtvX7JW1HVXl4zDho/sNfwPHt+cOAHwInD1z3d8C3p51/Crhglu9eRDMs/0XgtGnlpwCbZql7fNuvfbbz+YXAOdPOC/iN9v2K9nzf7dTdD7gD+MAO2j8duBc4ZFrZMe33PmE7dRbT3HO9DXjVtPILaILcIweu3Qh8cBt/zgUsb8+PbM+fNXDdPwCfXOh/fjw8JukwI9Swngw8EPjkQPkZwE8k2X9HlZMcmGRtku/RBJLNwPOAn9jF/cwOPvsOcDvNfcSVSfYb+PzpNAHrw7O0cUVVXTbtfGoC0YH3dSI5oh0Kvonm995B8z8Xg793Q1VdN+38IOCRwNkD1w2eHwVcR5Nl7jF1AOtoAr6kIRkINaxl7ev1A+VT5w/dXsUki2j+Q/7TwNuB5wA/BZwD7L1ru8mjt9FHAKrqFprguwQ4E7gxyd8m+bH2koe3rxtnaePWgfN72te9AZIcDJxLE5RfRzP8+VPADcz8vYN9fWT7euNA+eD50vbazQPHKTTBVNKQnDWqYU0Fh/2Bm6aVH9C+3ryDuo8Dngo8v6q+MFWY5AG7soNJDqXJyi7c3jVVdSFwdNv2UcAHgI/T3Fec+l3LgB2uZ5zF0TTZ88qq+mHbtz1ohpdndGngfCo7fMRA+eD5zcD3aIZlJc2DGaGG9U2a4b1jB8qPA/69qqYylnuYmfVMBby7pwqSPIYmU9olkuwF/AlNtvY3s11fVXdW1eeA04AntsUX0tyzWzXP7jwA2EozJDrlOIb7H8+raYLhyoHylwycr6PJCG+vqvWDxxz7LfWSGaGGUlU3J/kj4K1J7gXWA78AvIBpyxWAS4GVSY6hmcF5bVt2DfD+JG8D9gXeQZPRzNVPJbmTJvN6Ms0Q5HLgF6tdQzgoyQuB1wCfBa6iGUZ9Hc3GAVTVrUneBbwnyZ40E1T2Al4IvKOqhu3v+TSTXj6c5K9oFvz/DjOHVGeoqi1J3ge8L8mNNDNzXwL8p/aSre3reTSTjc5L8gfAt4AHA4cBe1fVm4fsq9R7BkLtjLfTZDm/RjMkejnwiqqanoH9Gc0w6Gk09w3fUVWnJPkF4IM0s0qvoVl68GyaIDYX57evtwNXAH8P/ElVfWcHdS6nGYp8L80Q7400yyneMnVBVf1+kpuBN9AEyVtoZmLeNmzHquobSV4NnAz8PPAvNJn0GUN+xf+k+bP7deC3aO6vvpfmz/YHbRvV/pm+hWa5xcE0w6UXA386bF8lQaoGb1FI2t0k+RDw3Kp6zEL3Rbq/MSOUdjNJngz8Es2mA1uB5wOvpll0L2kXMyOUdjNJHksztHwY8CDgSprdbt5f/gsr7XIGQklSr7l8QpLUawZCSVKv7dRkmaVLl9by5ctH1BVJ0s7YsGHDpqoa3HVIO2mnAuHy5ctZv95NKyRpd5DkyoXuw/2ByyckSR1HH310bdo09+12N2zY8MWqOnoXdmmkDISSpI5NmzbNa/QvydJd2J2RMxBKkmbYumXLQndhbAyEkqSOqmLr1q2zX3g/YSCUJM3Qp4zQdYSSpF4zI5QkdVWxdWt/MkIDoSSpo4CtW7xHKEnqKzNCSVKfVZWTZSRJ6gszQknSDK4jlCT1Vt+GRg2EkqQZDISSpP7q2RZrTpaRJPWaGaEkqaNZUO/QqCSpr1xQL0nqs6Jfs0a9RyhJ6jUzQklSV7mgXpLUa/0aGjUQamgrVqxZ6C5MnPXrT1zoLkg7rcpZo5KkXnNBvSRJvWFGKEnqcGhUktRzLqiXJPVZwdYto71HmORNwK80rfEN4NXAA4EzgOXAFcBxVXXLSDuC9wglSQOqzQjneswmyaOB3wRWVNWTgcXAS4HVwLqqOgRY156PnIFQkrQQ9gAekGQPmkzwWmAlsLb9fC1wzLg6IknSj8x/sszSJOunna+pqvsWIlfV95L8D+Aq4E7g3Ko6N8kBVbWxvWZjkv3n04lhGQglSR01/3WEm6pqxfY+TPJQmuzvscCtwCeTvGI+Dc6HgVCS1DX65RNHAf9RVTcCJPk08NPA9UmWtdngMuCGUXZiivcIJUnjdhVwRJIHJglwJHAJcDawqr1mFXDWODpjRihJGjDaTber6qtJPgV8HbgX+GdgDbAPcGaSE2iC5bEj68Q0BkJJUkeN4TFMVXUycPJA8d002eFYGQglSQN8DJMkqceq+rXFmpNlJEm9ZkYoSZph1HuN7k4MhJKkrp4NjRoIJUkdhc8jlCT1Wc17i7WJ4mQZSVKvmRFKkjocGpUk9Vu5oF6S1HPeI5QkqSfMCDW0LUuWjLyNxZs3j7wNgLv33Xcs7UiTqBwalST1mgvqJUl95qxRSVK/uaBekqT+MCOUJM3g0KgkqbecNSpJ6r0+3SM0EEqSOvqWETpZRpLUa2aEkqQZXFAvSeqvKrZu8R6hJKmnin5lhN4jlCT1mhmhJKmrZ7NGDYSSpI5maNR7hJKkvhpxRpjk8cAZ04p+DHg78Ndt+XLgCuC4qrplZB1peY9QktRRNIFwrses31/17ao6rKoOAw4H7gA+A6wG1lXVIcC69nzkDISSpIV0JPCdqroSWAmsbcvXAseMowMOjUqSumre9wiXJlk/7XxNVa3ZzrUvBT7Rvj+gqjYCVNXGJPvPpxPDMhBKkgbM+x7hpqpaMdtFSfYEXgK8eT6NzZeBUJLUUTW2BfXPB75eVde359cnWdZmg8uAG8bRCe8RSpIGNFuszfXYCS/jR8OiAGcDq9r3q4CzdtEP2iEDoSRp7JI8EHgu8OlpxacCz01yWfvZqePoi0OjkqSOcQyNVtUdwMMHym6imUU6VgZCSdIAt1jTLrRixfZmDE+ee/fdd+RtLN68eeRtANy1335jaef+9Pe/fv2JC90Fjcv8l09MFO8RSpJ6zYxQktRRDo1KknqtMBBKkvqrqF7dIzQQSpK6epYROllGktRrZoSSpAE1rr1GdwsGQklSRxWU9wglSX2VwKLF/blz1p9fKknSNpgRSpJmWLQ4C92FsTEQSpI6Eli0yEAoSeqtmBFKknqsZxmhk2UkSb1mRihJ6ghOlpEk9VnPhkYNhJKkDjNCSVK/Jb3KCJ0sI0nqNTNCSdIMDo1Kknqr2XTbQChJ6jHvEUqS1BNmhPcD3z/ooIXuwi6z1223jaWde/feeyzt3L3vviNvY1x/ZuoPh0YlST0XFi3qz4ChgVCS1DWGjDDJfsCHgCcDBbwG+DZwBrAcuAI4rqpuGWlH8B6hJGlAaCbLzPUY0h8DX6iqJwBPAS4BVgPrquoQYF17PnIGQknSWCV5MPBM4K8AquqeqroVWAmsbS9bCxwzjv44NCpJ6pr/0OjSJOunna+pqjXTzn8MuBH4cJKnABuANwAHVNVGgKramGT/+XRiWAZCSVJHMu8n1G+qqhU7+HwP4CeB11fVV5P8MWMaBt0Wh0YlSTOM+B7hNcA1VfXV9vxTNIHx+iTLANrXG0by4wYYCCVJHVPrCOd6zKaqrgOuTvL4tuhI4N+As4FVbdkq4KxR/L5BDo1KkhbC64GPJdkT+C7waprk7MwkJwBXAceOoyMGQknSDKPea7SqLga2dR/xyJE2vA0GQklSl1usSZL6LPiEekmSesOMUJLU5dCoJKnPpvYa7QsDoSSpK7BocX/unBkIJUkD5r3F2kTpT8iXJGkbzAglSR2J9wglST3Xp6FRA6EkqcOMUJLUe5OYEaZ58v3TgYcDNwEXVtUPZqtnIJQkTbwkbwLeAewNbAKWAncnObmqPrCjugZCSVJXJmuv0SQvA34XOB74bFVtTbIIOAb4syTXVdXHt1ffQChJ6ggTNzT6W8CvVtV9D/Ktqq3Ap5NsAd4KGAjvzx5y9dVjaedbx47+GZnj+i0Pv+yysbTz7Re/eORtPO4LXxh5G+qZyZss8wTg3O18di7w0R1VdkG9JGnS3QZs3s5n9wA7nDBjRihJ6pjAodENwHOBc7bx2dHAxTuqbEYoSepqH8M012MBvAd41nY+eybw3h1VNiOUJA2YrFmjVXURcNF2PjtptvpmhJKkjkxYRphkryTvSnJZkjuSXJ7knUn2HKa+GaEkadL9AbACeD1wJXAwcDLwYOCNs1U2EEqSZli0aKIGDI8D/nNVbWrPL0myHvhXDISSpJ01NTQ6QWonyzsMhJKkAZM1WQY4E/hMknfRDI0+hmZo9JPDVDYQSpK6Ji8jPAn4PeDPgUcB1wIfAd49TGUDoSRpolXVPTQZ4MlzqW8glCR1TNo9wiTbW0zfUVVf3la5gVCSNMOo7xEmuYJmj9AtwL1VtSLJw4AzgOXAFcBxVXXLEF/3kWGaBA7a1gcGQklSxxgzwudMW/IAsBpYV1WnJlndns+6M0xVHTyfTkzUQhFJ0v3aSmBt+34tzYN1h5JkSZKfSXJckp9NMnSiZ0YoSRow7+UTS9sF7VPWVNWagWsKODdJAX/Rfn5AVW0EqKqNSfYfqrfJocDZwIOAq2mGQH+Y5MVVdels9Q2EkqSu+Q+NbqqqFbNc84yqurYNduclmTVg7cD/Bv6yqv5wqiDJSW35c2arbCCUJHWE0U+Wqapr29cbknwGeBpwfZJlbTa4DLhhyK87DDhqoOz9NPcYZ+U9QklS14ifPpHkQUn2nXoPPA/4Js3w5qr2slXAWUP2+BrgZwbKfrYtn5UZoSRp3A6g2RINmjj08ar6QpKvAWcmOQG4Cjh2yO97C3BWks+39R4DvAj45WEqGwglSR2jHhqtqu8CT9lG+U3AkXP4vrOTrABeBjwauBQ4uaouG6a+gVCS1JWFecDufLRB751zqWsglCTNsGjx5EwhSXIaTSI7Q1W9erb6BkJJUkcy+lmju9j0STFTW6mtBD4xTOXeBsIVKwbXdmo2dz3q9oXuwsR5/Oc+N/I2vv6a14y8DWl3VlVvHyxLcgTwtmHq9zYQSpK2b9LuEQ6qqouSPHOYaw2EkqSOZOKeUD9Dkj2BlUkWVdXWHV1rIJQkzXA/yAjvAc4f5trJmRYkSdIImBFKkjomcNbovBgIJUkzTPrQ6M4wEEqSuiYsI0xyPttZUD9dVW3zkUwGQklSR5i4LdYuBF4JfJQfPZj3lcBHgMtnq2wglCRNuqOA501/Gn2SjwCnV9VbZqtsIJQkdc3/CfXj9niaxy9Nd0VbPiuXT0iSOqYewzTXYwFcAJye5NAkD0xyKM2w6JeGqWwglCR1jfgJ9SPwGuBu4J+B29vXO4FZnzwBDo1KkrahMjlDo1V1M/DKJK8ClgKbqqqGrW8glCRNtCQPAl5Fkw1+bGeCIBgIJUkDCrh352LJQvsYcDCwF/AkYHWS44EXVNVxs1U2EEqSOiYwEP4c8GjgoTQbba8GzgR+f5jKBkJJUscEBsKbgK1VdVWSpW3ZZmDvYSo7a1SSNOneBrwvyUOASrIf8AfAvwxT2YxQktRRNXEZ4dr29VdpEtqbaYLgLw9T2UAoSZrh3oXuwM45ZNr7olk+cduwlQ2EkqSOoiYqI6yq786nvoFQktQxaZNlknx4e59V1ay7yzhZRpI06a6edlxDs13qMTTbrM3KjFCS1DFpGWFVvX2wLMkRNLNJZ2UglCR1jCsQJlkMrAe+V1UvSvIw4AxgOc1jlI6rqlvm8t1VdVGSZw5z7W4ZCFesWDPyNrYsWTLyNsbl4l8/aizt7P2k94y8jQv/8SkjbwPgac8eap3tvC3evHnkbdS+G0feRuOgMbWj3cGYZo2+AbgEeHB7vhpYV1WnJlndnp80ly9OsiewMsmiqtq6o2u9RyhJGrskBwIvBD40rXglP1oTuJbmPt+cVNU9VXX+bEEQdtOMUJK0cHbBgvqlSdZPO19TVYNDfX8E/C6w77SyA6pqY9OH2phk//l0YlgGQklSxy5YR7ipqlZs78MkLwJuqKoNSZ49n4Z2BQOhJKljDJNlngG8JMkLaDbGfnCSjwLXJ1nWZoPLgBtG2YkpBkJJUseoA2FVvRl4M0CbEf5OVb0iyfuAVcCp7etZw3xfkvNp1g7O1u5ztlVuIJQk7S5OBc5McgJwFXDskPU+Op9GDYSSpBnGtel2VV0AXNC+vwk4cg7fcdp8+mAglCR1TNrOMkmeCJwM3Aa8uapuTPLjQA2zIbfrCCVJHVPLJ+Z6LIC/Bm4FHgD8SVu2HPjLYSqbEUqSOibtMUzATwBPo9mh5ptt2ZdptmublRmhJGnSXQ4sq6pbgX3asocAs+4qA2aEkqQBk3aPEPgIcEa7/GJxkpXAm4Bzh6lsIJQkzTCuWaO7yJva1z8FbgbeTjM0esowlQ2EkqSOScsIq+rg+dT3HqEkqdfMCCVJHbvg6RNjleS7DLfF2mO3VW4glCR1TNrQKPAXwMuBDwJXAwcCrwc+DvzTbJUNhJKkjglcR/gq4HlV9b2pgiR/C5xXVafOVtlAKEnqKCZu1ugy4M6BsjuARw5T2ckykqRJ91ngs0men+SJSZ4PfL4tn5UZoSRphgkbGv114Pdo9hl9FHAt8Ang3cNUNhBKkjombbJMVd0FvK09dpqBUJLUMWnLJwCSHA68FjgIuBL4UFV9fZi63iOUJHVMZYST8himJM8DPk0TAJ8F3Aick+RFw9Q3IxyxS485ZuRtHHj+pSNvA+CAP/7Jkbfxk/vuO/I2AP5u7dVjaefKf7915G288ZRzRt4GQPb8L6NvZM+bR98GcPh7Lht5G+vXnzjyNnSfdwPHVtU/JfnvVXVyks/RPI/w87NVNhBKkjomcPnE46pqcOH8BpqH887KQChJGjBxC+rvTPKgqvohP9pq7RXAt4apbCCUJHVM2qxR4Cs09wb/DliS5FJgL+Alw1Q2EEqSJt1rpr0/gWYd4UVVtXmYygZCSVLHpGWE7ZDo1Pszdra+gVCS1DFp6wh9DJMkaZeawFmjvzKfygZCSdIMk5QRVtX586nvzjKSpF4zI5QkdUzgg3nnxUAoSeoY9azRJHsD/0Cz1m8P4FPttmgPA86g2RHmCuC4qrplZB1pOTQqSeoYw6bbdwM/V1VPAQ4Djk5yBLAaWFdVhwDr2vORMxBKkjqmZo3O9Zj1+xu3t6dL2qOAlcDatnwtcMz8f83sDISSpF1taZL1044Zj+JIsjjJxcANwHlV9VXggKraCNC+7j+OznqPUJLUNf8F9ZuqasUOm6jaAhyWZD/gM0mePJ8G58NAKEnqGOcWa1V1a5ILgKOB65Msq6qNSZbRZIsj59CoJKljavnEqCbLJHlEmwmS5AHAUcClwNnAqvayVcBZo/mFXWaEkqRxWwasTbKYJiE7s6o+n+RC4MwkJwBXAceOozMGQklSx6iHRqvqX4GnbqP8JuDIkTW8HQZCSVLHBG66PS8GQklSx6Q9j3C+DISSpK4Jex7hfDlrVJLUa2aEkqQOh0YlSb3mY5h6YtMTnjCWdg686KKRt/GQq68eeRsAW5YsGXkbe9x118jbAPj5l+83lnZg9O28b/XlI28D4LfeP/q//3v33nvkbQB8+UsvHUs7k8pZo5KkXuvb0KiTZSRJvWZGKEmaoU8ZoYFQktRRPVtHaCCUJHV4j1CSpB4xI5Qkdbh8QpLUay6olyT1noFQktRbTpaRJKlHzAglSR2uI5Qk9ZqzRiVJvda3e4QGQknSgH4tn3CyjCSp18wIJUkdDo1KknouVC1Z6E6MjYFQktRVga17LnQvxsZ7hJKkXjMjlCQNWGRGKEnqsamh0bkes0hyUJIvJbkkybeSvKEtf1iS85Jc1r4+dOS/FQOhJGmG0QZCmo1rfruqDgWOAP5bkicCq4F1VXUIsK49HzmHRiVJA0Y7WaaqNgIb2/e3JbkEeDSwEnh2e9la4ALgpJF1pLVTgfCSS25kxYo1o+rLfb5/0EEjb2O/K64YeRsAe91221jaGYfFmzePvI31608ceRvAWP45BtiyZPRT0H/zg08deRsAb/2lr4y8jeuuHM+/L896zujbGcc/y4cffvjhI29kbpYmWT/tfE1VbfNfuiTLgacCXwUOaIMkVbUxyf4j7ylmhJKkQfNfPrGpqlbMdlGSfYD/A7yxqn6QZD5tzpmBUJI0YPSzRpMsoQmCH6uqT7fF1ydZ1maDy4AbRtqJlpNlJEldo581GuCvgEuq6gPTPjobWNW+XwWctct/2zaYEUqSxu0ZwCuBbyS5uC17C3AqcGaSE4CrgGPH0RkDoSRpwMhnjX6laWSbjhxZw9thIJQkdVVgS392ljEQSpIGLIIyEEqSesunT0iS1BtmhJKkrp49j9BAKEkaYCCUJPWagVCS1Gflg3klSeoNM0JJ0gCHRiVJfebOMpKkfkuvdpbxHqEkqdfMCCVJA7xHKEnqs54tnzAQSpK6nCwjSeq3fg2NOllGktRrZoSSpAH9Wj5hIJQkdVVgy+KF7sXY7JaBcJ/rrlvoLuwy69efuNBd0Dbcn/5eVqxYM5Z2Tj1jxcjbWLx588jbgPvP3/+GDRs2jOq7F23dOue6c6+5MHbLQChJWkBVZMuWhe7F2DhZRpLUa2aEkqQB/coIDYSSpI7U/O4RThoDoSRpQL8yQu8RSpJ6zYxQktRVmBFKkvorFIu2bp3zMVQbyWlJbkjyzWllD0tyXpLL2teHjuxHTmMglCR1tRnhXI8hnQ4cPVC2GlhXVYcA69rzkXNoVJLUNYYF9VX1D0mWDxSvBJ7dvl8LXACcNNKOYEYoSdp9HFBVGwHa1/3H0agZoSRphnmuI1yaZP208zVVNZ5NcefAQChJ6sj8h0Y3VdVcdmm/PsmyqtqYZBlww3w6MSyHRiVJA2ock2W25WxgVft+FXDWvH/KEMwIJUldY9hiLcknaCbGLE1yDXAycCpwZpITgKuAY0faiZaBUJI0dlX1su18dORYO4KBUJI0Q7/2GjUQSpI60rMt1gyEkqQB1avHMDlrVJLUa2aEkqQuh0YlSf3mZBlJUo9lDOsIdycGQknSADPC7Tr00Eewfv2Jo+rLfVas2G33ZpV2O+P4d1K6PzMjlCR1OVlGktRn6dk6QgOhJKnLjFCS1Gvzfx7hRHFnGUlSr5kRSpJm8B6hJKm30rOhUQOhJGlAvwKh9wglSb1mRihJ6nKvUUlSv/VraNRAKEnqiAvqJUn91q8t1pwsI0nqNTNCSVKXQ6OSpF5zQb0kqc+CyyckSX3Ws4zQyTKSpF4zEEqSBjQZ4VyPYSQ5Osm3k1yeZPWIf9AOOTQqSerIiLdYS7IY+CDwXOAa4GtJzq6qfxtZoztgIJQkDRj5PcKnAZdX1XcBkvwNsBJYkEDo0KgkadweDVw97fyatmxBmBFKkjruuOOqL27Y8Lql8/iKvZOsn3a+pqrWTDvPNurUPNqbFwOhJKmjqo4ecRPXAAdNOz8QuHbEbW5XqoYPwkluBK4cXXckSTvhMVX1iIXuxM5Ksgfw78CRwPeArwEvr6pvLUR/diojnMQ/cEnS7qWq7k3yG8AXgcXAaQsVBGEnM0JJku5vnDUqSeo1A6EkqdcMhJKkXjMQSpJ6zUAoSeo1A6EkqdcMhJKkXjMQSpJ67f8DYVyaMg8CC7UAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# for normal linear scale\n", - "ColorScale = 1\n", - "cmap='terrain'\n", - "vis.PlotArray(src, ColorScale=ColorScale,cmap=cmap, TicksSpacing=TicksSpacing)" - ] - }, - { - "cell_type": "markdown", - "id": "2d49ef17-0da5-4add-a92b-c6f35d1aef61", - "metadata": {}, - "source": [ - "### Power Scale\n", - "\n", - "- The more you lower the value of gamma the more of the color bar you give to the lower value range" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "id": "3484624a-9e7c-4ba8-94a2-24414dbe874b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(
,\n", - " )" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "ColorScale = 2\n", - "gamma=0.5\n", - "\n", - "vis.PlotArray(src, ColorScale=ColorScale, cmap=cmap, gamma=gamma,\n", - " TicksSpacing=TicksSpacing)" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "id": "cac5cf1e-7145-4328-81ab-dd438d5e862f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(
,\n", - " )" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "vis.PlotArray(src, ColorScale=ColorScale, cmap=cmap, gamma=0.4,\n", - " TicksSpacing=TicksSpacing)" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "5529a008-4c29-43dd-86b1-2561d50589d1", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(
,\n", - " )" - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcIAAAFvCAYAAADZmst1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAdiUlEQVR4nO3de5hlVXmg8ffr5tLIRYQWRRFbIyYomRApDWpGUW7tjWYcYdSIoERMMgqazAREBbwGYzSKmtEOIgTRgAwqaLAhIDoqGKq9gmC4RKChpelGw1UuXd/8sXfh2adup+rUPqd27/f3PPs5Z6+zV611qrv5+NZea+3ITCRJaqtFw+6AJEnDZCCUJLWagVCS1GoGQklSqxkIJUmtZiCUJLWagVCPiIjs4dhnhp9xaEQcMcf2T4qI9TNcc0RHX8Yi4j8j4icR8bGI+J0pvtNb5tKfKdo/PSJG5+vnSRq+zYbdAS0oz+14vxVwKfB+4Osd5T+b4WccCiwFTp/Xnk30YuB+YBvgmcCbgTdFxKsy88KO654L/EfNfZHUYAZCPSIzrxh/HxHblG9v6CxfQK7MzHvK9/8aEZ8GvgZ8ISKWZeZ/QvU7LXQRsTkwlpkbh90XqU0cGlXPImJxOXx5c0Q8EBFXR8RrOz4/HfjvwAs7hi9PKj97WURcHBHrIuKuiLgiIg6Yr75l5gPAW4Htgdd09KkyNBoRfxwR/6/sw10R8aOIOKTre74pIn4aEb+JiNsj4tyIeHTXNfuXQ7L3RsR3IuKZXZ//VURcWQ7d3h4RF0TE07quuaz82UdFxA3Ab4AnROF9Hb+r0yLi1eV3WdZRf0lE/G1E3FL+efw4Il7a9y9TahkDoWbjvcA7gZXAQcB3gbMiYjzwvA/4JvBDiiHJ5wKnlp89BbgAOIwiWH4PuDAinj9fncvMa4E1wN6TfR4R21FkjTeWfXgVcCZF8By/5l3AZ4BvAQcDfw78J8UQ7LhdgQ8DH6AIujsB50REdFyzC/BJYAXwJmAx8N3ugAo8v2zjWOAVZVtvA44HPl328X7gbyf5SucCRwAfLOteCZwfEXtO9v0lTSEzPTwmHBT/4U/giPJ8B+Be4MSu6/4F+HnH+bnAZTP87EUUw/KrgNM6yk8C1s9Q94iyX9tM8fnlwIUd5wm8pXw/Up5vO0Xd7YH7gI9O0/7pwMPAbh1lB5c/9/emqLOY4p7r3cDrO8ovowhyj++6di3wqUl+zwksK8/3Lc9f2HXdt4EvDfvvj4dHkw4zQvVqD+BRwJe6ys8Gnh4RO01XOSJ2iYgzIuJWikDyEHAA8PR57mdM89kNwD0U9xFXRMT2XZ8/lyJgfW6GNn6Rmdd1nI9PINrlkU5E7F0OBW+g+L73UfzPRff3XZ2Zv+w4fxLweOD8ruu6z/cDfkmRZW42fgCXUAR8ST0yEKpXO5evt3eVj58/ZqqKEbGI4j/kzwNOAF4EPBu4EFgyv93kiZP0EYDM/BVF8N0cOAe4IyK+HhFPLS/ZsXxdO0Mbv+46f7B8XQIQEbsCF1EE5TdTDH8+G1jHxO/b3dfHl693dJV3ny8tr32o6ziJIphK6pGzRtWr8eCwE7Cho/xx5eud09R9GvCHwEsy8xvjhRGx1Xx2MCJ2p8jKLp/qmsy8HFhetr0f8FHgCxT3Fce/187AtOsZZ7CcIntekZn3ln3bjGJ4eUKXus7Hs8PHdpV3n98J3EoxLCupD2aE6tVVFMN7h3SVHwr8e2aOZywPMjHrGQ94D4wXRMSTKTKleRERWwKnUGRr/zzT9Zl5f2ZeAJwGPKMsvpzint3hfXZnK2CMYkh03KH09j+et1AEwxVd5Qd1nV9CkRHek5mj3ccc+y21khmhepKZd0bEx4B3RcTDwCjwSuCldCxXAK4FVkTEwRQzOG8ry9YAH4mIdwPbAu+hyGjm6tkRcT9F5rUHxRDkMuBVWa4h7BYRLwPeCHwFuJliGPXNFBsHkJm/joj3AR+IiC0oJqhsCbwMeE9m9trfSykmvXwuIj5LseD/fzFxSHWCzNwYER8GPhwRd1DMzD0I+P3ykrHy9WKKyUYXR8SHgKuB7YA9gSWZ+Y4e+yq1noFQs3ECRZbz5xRDotcDr8vMzgzsHyiGQU+juG/4nsw8KSJeCXyKYlbpGoqlB/tQBLG5uLR8vQf4BfCvwCmZecM0da6nGIr8IMUQ7x0UyymOH78gM/8mIu4EjqEIkr+imIl5d68dy8yfRsQbgBOB/wb8mCKTPrvHH/H3FL+7vwD+kuL+6gcpfrd3lW1k+Ts9nmK5xa4Uw6U/Aj7Ra18lQWR236KQtNBExKnA/pn55GH3RdrUmBFKC0xE7AH8D4pNB8aAlwBvoFh0L2memRFKC0xEPIViaHlPYGvgJordbj6S/oOV5p2BUJLUai6fkCS1moFQktRqs5oss3Tp0ly2bFlNXZEkzcbq1avXZ2b3rkOapVkFwmXLljE66qYVkrQQRMRNw+7DpsDlE5KkiuXLl+f69XPfbnf16tWrMnP5PHapVgZCSVLF+vXr+xr9i4il89id2hkIJUkTjG3cOOwuDIyzRiVJFZnJ2NjYnI9eRMTbI+LqiLgqIr4YEUsiYofygdbXla9TPud0PhkIJUkTjG3cOOdjJhHxROBoYCQz96B4WsurgeOASzJzN4pHjR1X41d8hIFQkjQMmwFblQ+tfhTFI9tWAGeUn5/BgB487T1CSVJVJmNj9d0jzMxbI+LvKJ4Lej9wUWZeFBGPy8y15TVrI2Kn2jrRwUAoSapIYGxjb/f6prA0Ijqnna7MzJXjJ+W9vxXAUygeWP2liHhdPw32w0AoSarqPyNcn5kj03y+H/AfmXkHQEScBzwPuD0idi6zwZ2Bdf10olcGQklSRWbWvXziZmDviHgUxdDovsAocC9wOHBy+frVOjsxzkAoSRqozPx+RJwL/AB4GPghsBLYBjgnIo6kCJaHDKI/BkJJ0gS9rgecq8w8ETixq/gBiuxwoAyEkqSKuodGI+J3gbM7ip4KnAD8U1m+DPgFcGhm/qq2jpRcRyhJmqDOBfWZ+fPM3DMz9wT2Au4DvsyQFtSbEUqSqsot1gZkX+CGzLwpIlYA+5TlZwCXAcfW3QEDoSRpvk27jrDLq4Evlu9dUC9JGr5iQX2t6wgBiIgtgIOAd/TTWL8MhJKkqpq3WOvwEuAHmXl7eT6UBfVOlpEkVSRZ62SZDq/ht8OiAOdTLKSHAS6oNxBKkgau3FVmf+C8juKTgf0j4rrys5MH0ReHRiVJVTmQBfX3ATt2lW3ABfWSpOGrfa9RImJ74FRgD4r5OW8Efs4QFtQbCNWzkZGpZj9rKqOjRw27C9KsZfY9a7QXHwe+kZmvKmePPgo4nmJB/ckRcRzFgnrXEUqSBq3eBfURsR3wAuAIgMx8EHhwWAvqnSwjSZpvSyNitOPoHhp5KnAH8LmI+GFEnBoRW9O1oB5wQb0kafDmYWh0pgX1mwHPAt5aPpLp4wxoX9HJmBFKkroUC+rnevRgDbAmM79fnp9LERhvLxfS44J6SdLwJIxtHJvzMeOPz/wlcEv5OCYolkz8jCEtqHdoVJJUkQxki7W3AmeVM0ZvBN5AkZz5hHpJ0qYvM38ETHYf0QX1kqQhG8w6wgXDQChJqsia1xEuNAZCSVLVADLCiPgFcDewEXg4M0ciYgeGsMWas0YlScPyoszcs2PN4XEUW6ztBlzCgNYWmhFKkrrUv+n2FIayxZqBUJJUkf0/hmlpRIx2nK/MzO5d+xO4KCIS+Ez5eWWLtYhwizVJ0jD0nRHOtMUawPMz87Yy2F0cEdf202A/DISSpIrM+hfUZ+Zt5eu6iPgy8BzKLdbKbNAt1iRJm6aI2Doith1/DxwAXIVbrEmSFope9gztw+OAL0cEFHHoC5n5jYi4ErdYkyQNXc1Do5l5I/AHk5RvwC3WJEnDlrjFmiSpzbJdW6w5WUaS1GpmhJKkCodGJUntloPZYi0iFgOjwK2Z+XI33ZYkLRhjY2NzPmbhGOCajvOhbLptIJQkDVxE7AK8DDi1o3gFxWbblK8HD6IvDo2qZ0ev2lB7G6ccuGPtbQCc970HB9KO1ETZ/9BoL5tufwz4a2DbjjI33ZYkLQD9L6ifdtPtiHg5sC4zV0fEPv00NB8MhJKkigHMGn0+cFBEvBRYAmwXEZ/HTbclSQtCuaC+rskymfmOzNwlM5cBrwYuzczXMaRNtw2EkqSF4mRg/4i4Dti/PK+dQ6OSpAkGtaA+My8DLivfu+m2JGn45mHWaKMYCCVJE7Rp020DoSSpom0ZoZNlJEmtZkYoSZqgzifULzQGQklSVSZjG71HKElqqaTejDAilgDfBrakiEPnZuaJPoZJktQWDwAvzsw/APYElkfE3gzpMUxmhJKkqppnjWZmAveUp5uXR1I8hmmfsvwMioX2x9bWkZKBUJJUUQyN1nuPsHw6/WrgacCnMvP7EeFjmCRJC8AAnkeYmRuBPSNie+DLEbFHPw32w0AoSapI+g6E0z6PsNJW5q8j4jJgOT6GSZLUBhHx2DITJCK2AvYDrmVIj2EyI5QkVWXt9wh3Bs4o7xMuAs7JzK9FxOXAORFxJHAzcEidnRhnIJQkdal91uhPgD+cpNzHMEmShi/TLdYkSa3Wri3WnCwjSWo1M0JJUoVDo5KklmvXg3kNhDUbGVk580UNcd73tq29jVNqb6Gw9YaHBtLOyCs2nT//0dGjht0FDUr9yycWFO8RSpJazYxQklQxD1usNYqBUJJUlRgIJUntlWSr7hEaCCVJVS3LCJ0sI0lqNQOhJKlLMja2cc7HTCLiSRHxzYi4JiKujohjyvIdIuLiiLiufH1M7V8VA6EkqUsm5NjYnI8ePAz8VWbuDuwN/M+IeAZwHHBJZu4GXFKe1857hJKkighYtLi+PCkz1wJry/d3R8Q1wBOBFcA+5WVnAJcBx9bWkZKBUJI035ZGxGjH+crMnHSbpYhYRvFswu8DjyuDJJm5NiJ2qr2nGAglSZNYtDj6qb4+M0dmuigitgH+L/C2zLwroq8258xAKEmqiIBFi+oNShGxOUUQPCszzyuLb4+InctscGdgXa2dKDlZRpLUJVi0eO7HjD+9SP0+C1yTmR/t+Oh84PDy/eHAV+f9q03CjFCSVFV/Rvh84DDgpxHxo7LseOBk4JyIOBK4GTikzk6MMxBKkgYqM78DTBVp9x1kX8BAKEnqEvQ9WaZRDISSpKoBTJZZSAyEkqQKM0JJUrtFtCojdPmEJKnVzAglSRM4NCpJaq1i020DoSSpxbxHKElSS5gRbgJWXXDvYBraMIhGthhEI9x15wMDaee8721eexuvfN5gfmdqD4dGJUktFyxa1J4BQwOhJKnKjFCS1GaBk2UkSWoNM0JJUpVDo5KkNovo7UnzmwoDoSRpgjbdIzQQSpIq2raO0MkykqRWMyOUJE3g0Kgkqb1aNjRqIJQkVQQ+oV6SpFpFxGkRsS4iruoo2yEiLo6I68rXxwyiLwZCSVJVOTQ616NHpwPLu8qOAy7JzN2AS8rz2hkIJUkV43uNzvXoRWZ+G7izq3gFcEb5/gzg4Pn6TtPxHqEkqSpg0eK+8qSlETHacb4yM1f2UO9xmbkWIDPXRsRO/XSiVwZCSVKXvrdYW5+ZI/PVm7o5NCpJWihuj4idAcrXdYNo1EAoSaqIqP8e4RTOBw4v3x8OfLXvL9MDh0YlSRPUvaA+Ir4I7ENxP3ENcCJwMnBORBwJ3AwcUmsnSgZCSVLFeEZYp8x8zRQf7Vtrw5MwEEqSJmjiFmsRsR3wXGBHYANweWbeNVM9A6EkqfEi4u3Ae4AlwHpgKfBARJyYmR+drq6BUJJUFc3aazQiXgP8NXAE8JXMHIuIRRQL8v8hIn6ZmV+Yqr6BUJJUETRuaPQvgT/LzEdmmWbmGHBeRGwE3gUYCDdlB75i64G0884/vWrmi/q2xwDagEMO32Eg7Zz0lmtqb+PoVQPZfENtMoDJMvPs94CLpvjsIuDz01V2HaEkqenuBh6a4rMHgWknzJgRSpIqGjg0uhrYH7hwks+WAz+arrIZoSSpajCPYZpPHwBeOMVnLwA+OF1lM0JJUpdmzRrNzCuAK6b47NiZ6psRSpIqomEZYURsGRHvK59sf19EXB8R742ILXqpb0YoSWq6DwEjwFuBm4BdKfYu3Q5420yVDYSSpAkWLWrUgOGhwH/JzPXl+TXlg4F/goFQkjRb40OjDZKzLK8wEEqSujRrsgxwDvDliHgfxdDokymGRr/US2UDoSSpqnkZ4bHAO4FPA08AbgPOBN7fS2UDoSSp0TLzQYoM8MS51DcQSpIqmnaPMCKmWkxfkZnfmqzcQChJmqBh9wjP7OGaAJ402QcGQklSRdMywszctZ/6BkJJUuNFxObAH1FMllkLXJ6ZD/dS10AoSerSrOUTEbE7cD6wNXALxRDovRHxisy8dqb6jdo6QJI0AA3baxT4P8A/ZuYTMvOPMvMJwKll+YzMCCVJFUHjJsvsCezXVfYR4LheKhsIJUlVDZssA6wB/hi4rKPsv5blMzIQSpKa7njgqxHxNeBmii3WXg78SS+VvUcoSaoYHxqd6zFomXk+xWOYfg7sAFwL7JWZF/RS34xQklQVQ5v0MmeZeR3w3rnUNRBKkiZYtLg5A4YRcRpFIjtBZr5hpvoGQklSRUTjZo12TooZ30ptBfDFXiq3NhCOjKwcdhcaZ92ae4bdhcY56ZO7197GMb9cXXsbQI8T0aXBy8wTussiYm/g3b3Ub20glCRNrWn3CLtl5hUR8YJerjUQSpIqIpq1xdpkImILYEVELMrMsemuNRBKkibYBDLCB4FLe7m2OdOCJEmqgRmhJKmigbNG+2IglCRN0PSh0dkwEEqSqhqWEUbEpUyxoL5TZr5osnIDoSSpImjcFmuXA4cBn+e3D+Y9DDgTuH6mygZCSVLT7Qcc0Pk0+og4Ezg9M4+fqbKBUJJU1bznEf4uxeOXOv2iLJ+RyyckSRVNewwTxQN5T4+I3SPiURGxO8Ww6Dd7qWwglCRVlRnhXI8heCPwAPBD4J7y9X5gxidPgEOjkqRJZDRnaDQz7wQOi4jXA0uB9ZmZvdY3EEqSGi0itgZeT5ENnjWbIAgGQklSlwQenl0sGbazgF2BLYFnAsdFxBHASzPz0JkqGwglSRUNDIQvBp4IPIZio+3jgHOAv+mlsoFQklTRwEC4ARjLzJsjYmlZ9hCwpJfKzhqVJDXdu4EPR8SjgYyI7YEPAT/upbIZoSSpIrNxGeEZ5eufUSS0d1IEwT/ppbKBUJI0wcPD7sDs7NbxPimWT9zda2UDoSSpIslGZYSZeWM/9Q2EkqSKpk2WiYjPTfVZZs64u4yTZSRJTXdLx7GGYrvUgym2WZuRGaEkqaJpGWFmntBdFhF7U8wmnZGBUJJU0bRAOJnMvCIiXtDLtQsyEI6MrKy9jaNXbai9jUG5/++vG0g7v1q3sfY2/u747WtvA+DmF94wkHZOOXDH2tu4756Ham9D7dOwWaMTRMQWwIqIWJSZY9NduyADoSRJ/cjMBym2W5uRgVCSVNHABfV9MRBKkiqato6wXwZCSVLFpjBZZjYMhJKkiqYFwoi4lGLt4LQy80WTlRsIJUlN9/l+KhsIJUkTNGn5RGae1k99A6EkqaKBQ6PPAE4E7gbekZl3RMTvANnLhtzuNSpJqhhfPjHXYwj+Cfg1sBVwSlm2DPjHXiqbEUqSKhq4fOLpwHOA7YCryrJvAWf3UtmMUJLUdNcDO2fmr4FtyrJHA9NurTbOjFCSVNG0e4TAmcDZEfFhYHFErADeDlzUS2UDoSRpgibNGqUIegCfAO4ETqAYGj2pl8oGQklSRdMywszctZ/63iOUJLWaGaEkqaJpT5+IiBvpbYu1p0xWbiCUJFU0bWgU+AzwWuBTwC3ALsBbgS8A/zZTZQOhJKmigesIXw8ckJm3jhdExNeBizPz5JkqGwglSRVJ42aN7gzc31V2H/D4Xio7WUaS1HRfAb4SES+JiGdExEuAr5XlMzIjlCRN0LCh0b8A3kmxz+gTgNuALwLv76WygVCSVNG0yTKZ+Rvg3eUxawZCSVJF05ZPAETEXsCbgCcBNwGnZuYPeqnrPUJJUsV4RtiUxzBFxAHAeRQB8IXAHcCFEfHyXuqbEdZs2y+trb2NZ718We1tABzxlp4mYPXltZ9cV3sbAEsu/f2BtHPax7ervY03HlN7EwA8+JvDa2/j4Yc21t4GwFnffUHtbYyOHlV7G3rE+4FDMvPfIuJ/Z+aJEXEBxfMIvzZTZQOhJKmigcsnnpaZ3QvnV1M8nHdGBkJJUpfGLai/PyK2zsx7+e1Wa68Dru6lsoFQklTRtFmjwHco7g3+C7B5RFwLbAkc1EtlA6Ekqene2PH+SIp1hFdk5kO9VDYQSpIqmpYRlkOi4+/Pnm19A6EkqaJp6wh9DJMkaV41cNbon/ZT2UAoSZqgSRlhZl7aT313lpEktZoZoSSpooEP5u2LgVCSVNG0WaP9MhBKkioMhJKkVmvgrNG+OFlGktRqZoSSpKqGLajvl4FQklThPUJJUqu1bfmE9wglSa1mRihJqnBoVJLUam1bPmEglCRVmBFKktqtZcsnnCwjSWo1M0JJUoVDo5KkVmvbOsLWBsJnXffQQNrZecVTam/jwFdsXXsbAEev2lB7G5fdXXsTAJzyrtsG0xD1t3P6J55ZexsAP3h6/X/++2y7be1tAByz+MiBtNNUzhqVJLVa24ZGnSwjSWo1M0JJ0gRtyggNhJKkimzZOkIDoSSpwnuEkiS1iBmhJKnC5ROSpFZzQb0kqfUMhJKk1nKyjCRJLWJGKEmqcB2hJKnVnDUqSWq1tt0jNBBKkrq0a/mEk2UkSa1mRihJqnBoVJLUckHm5sPuxMAYCCVJVRkwtsWwezEw3iOUJLWaGaEkqcuiVmWEBkJJUlXLhkYNhJKkLgZCSVKrGQindM01dzAysrKuvjxi1QX31t7GvTvuUHsbAAc+b9P5y3TKgTvW3sbo6FG1twFwCvX/PQY4etWG2tvYbtsf1t4GwN5XH1B7G2NLltTeBsBzDvts7W0M4u/yXnvttVftjbSAGaEkqcp7hJKkdnPWqCSpzVqWEbqgXpLUamaEkqQu7coIDYSSpKoM2GgglCS11iJIA6EkqbXaNTTqZBlJUquZEUqSqlq2fMJAKEnqYiCUJLWagVCS1GbZri3WnCwjSWo1M0JJUheHRiVJbebOMpKkdotW7SzjPUJJUquZEUqSuniPUJLUZi1bPmEglCRVOVlGktRu7RoadbKMJKnVzAglSV3atXzCQChJqsqAjYuH3YuBWZCB8Otb/Kb+Ru4eQBvA6Og7BtKOZmd09Khhd2HejIysHEg7R6+6qPY2Tjlwx9rbgE3nz3/16tWr6/rZi8bG5lx37jWHY0EGQknSEGUSGzcOuxcD42QZSVKrmRFKkrq0KyM0EEqSKiL7u0fYNAZCSVKXdmWE3iOUJLWaGaEkqSppVUZoIJQkVQTpPUJJUouZEUqSWs0F9ZIktYcZoSRpAu8RSpJaK1o2NGoglCR1MRBKktqsZVusOVlGktRqZoSSpC4OjUqSWixcUC9Jard2bbHmPUJJUquZEUqSqhwalSS1m5NlJEktFi1bR2gglCR1MSOc0u67P5bR0aPq6ssjRkZW1t7GoLx+dNg90KZuEP8mB8V/LxoGM0JJUpWTZSRJbRYtW0doIJQkVZkRSpJarWXPI3RnGUlSq5kRSpIm8B6hJKm1omVDowZCSVKXdgVC7xFKklrNjFCSVOVeo5KkdmvX0KiBUJJUES6olyS1W7u2WHOyjCSp1cwIJUlVDo1KklrNBfWSpDYLXD4hSWqzlmWETpaRJLWagVCS1KXICOd69CIilkfEzyPi+og4ruYvNC2HRiVJFVHzFmsRsRj4FLA/sAa4MiLOz8yf1dboNAyEkqQutd8jfA5wfWbeCBAR/wysAIYSCB0alSQN2hOBWzrO15RlQ2FGKEmquO++m1etXv3mpX38iCURMdpxvjIzV3acxyR1so/2+mIglCRVZObymptYAzyp43wX4Laa25xSZPYehCPiDuCm+rojSZqFJ2fmY4fdidmKiM2Afwf2BW4FrgRem5lXD6M/s8oIm/gLlyQtLJn5cES8BVgFLAZOG1YQhFlmhJIkbWqcNSpJajUDoSSp1QyEkqRWMxBKklrNQChJajUDoSSp1QyEkqRWMxBKklrt/wMW6eYsGeipyAAAAABJRU5ErkJggg==\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "vis.PlotArray(src, ColorScale=ColorScale, cmap=cmap, gamma=0.2,\n", - " TicksSpacing=TicksSpacing)" - ] - }, - { - "cell_type": "markdown", - "id": "741561d7-2dd7-4331-9706-ba37a1da03cb", - "metadata": {}, - "source": [ - "### SymLogNorm scale" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "id": "c4cbe16d-cf94-4f48-b458-ee925e358b4f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(
,\n", - " )" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "ColorScale = 3\n", - "linscale=0.001\n", - "linthresh=0.0001\n", - "vis.PlotArray(src, ColorScale=ColorScale, linscale=linscale, linthresh=linthresh,\n", - " cmap=cmap, TicksSpacing=TicksSpacing)" - ] - }, - { - "cell_type": "markdown", - "id": "151fe0c9-e0de-4d9b-8c07-cffd51ea353a", - "metadata": {}, - "source": [ - "### PowerNorm scale" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "11a32ebe-1e5c-4f41-868b-7ec20c35dbb8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(
,\n", - " )" - ] - }, - "execution_count": 38, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "ColorScale = 4\n", - "vis.PlotArray(src, ColorScale=ColorScale,\n", - " cmap=cmap, TicksSpacing=TicksSpacing)" - ] - }, - { - "cell_type": "markdown", - "id": "69186f1e-5abb-4096-b9a3-956868544cb1", - "metadata": {}, - "source": [ - "### Color scale 5" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "id": "ffb9af49-d575-48d7-a3e7-fbeafbbcb9ff", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(
,\n", - " )" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "ColorScale = 5\n", - "midpoint=20\n", - "vis.PlotArray(src, ColorScale=ColorScale, midpoint=midpoint,\n", - " cmap=cmap, TicksSpacing=TicksSpacing)" - ] - }, - { - "cell_type": "markdown", - "id": "986d8940-910f-4902-aabd-e07b69492d8d", - "metadata": {}, - "source": [ - "# Cell value label\n", - "\n", - "- display_cellvalue : [bool]\n", - " True if you want to display the values of the cells as a text\n", - "- NumSize : integer, optional\n", - " size of the numbers plotted intop of each cells. The default is 8.\n", - "- Backgroundcolorthreshold : [float/integer], optional\n", - " threshold value if the value of the cell is greater, the plotted\n", - " numbers will be black and if smaller the plotted number will be white\n", - " if None given the maxvalue/2 will be considered. The default is None." - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "id": "606f5e96-5389-43ef-a2fc-556b78d8b6cb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(
,\n", - " )" - ] - }, - "execution_count": 40, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "display_cellvalue = True\n", - "NumSize=8\n", - "Backgroundcolorthreshold=None\n", - "\n", - "vis.PlotArray(src, display_cellvalue=display_cellvalue, NumSize=NumSize,\n", - " Backgroundcolorthreshold=Backgroundcolorthreshold,\n", - " TicksSpacing=TicksSpacing)" - ] - }, - { - "cell_type": "markdown", - "id": "2795abcf-f32e-4acd-a6fe-3b334378cd16", - "metadata": {}, - "source": [ - "# Plot Points\n", - "\n", - "if you have points that you want to display in the map you can read it into a dataframe \n", - "in condition that it has two columns \"x\", \"y\" which are the coordinates of the points of theand they have to be \n", - "in the same coordinate system as the raster" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "id": "c249032f-419a-4ee6-a24f-c4f334ac02d4", - "metadata": {}, - "outputs": [], - "source": [ - "# read the points\n", - "pointsPath = \"data/GIS/Hapi_GIS_Data/points.csv\"\n", - "points = pd.read_csv(pointsPath)" - ] - }, - { - "cell_type": "code", - "execution_count": 42, - "id": "be3f0a19-0910-479b-8287-55e44f277f97", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(
,\n", - " )" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "Gaugecolor='blue'\n", - "Gaugesize=100\n", - "IDcolor=\"green\"\n", - "IDsize=20\n", - "vis.PlotArray(src, Gaugecolor=Gaugecolor, Gaugesize=Gaugesize,\n", - " IDcolor=IDcolor, IDsize=IDsize, points=points,\n", - " display_cellvalue=display_cellvalue, NumSize=NumSize,\n", - " Backgroundcolorthreshold=Backgroundcolorthreshold,\n", - " TicksSpacing=TicksSpacing)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/src/Hapi/__init__.py b/src/Hapi/__init__.py index 94ac6e66d..e1fce36ea 100644 --- a/src/Hapi/__init__.py +++ b/src/Hapi/__init__.py @@ -1,6 +1,4 @@ -""" -Hapi - Hydrological library for Python -===================================================================== +"""Hapi - Hydrological library for Python. **Hapi** is a Python package providing fast and flexible, way to build distributed hydrological model using lumped conceptual model @@ -17,11 +15,9 @@ """ from __future__ import annotations -from importlib.metadata import PackageNotFoundError -from importlib.metadata import version - +from importlib.metadata import PackageNotFoundError, version try: __version__ = version(__name__) except PackageNotFoundError: # pragma: no cover - __version__ = "unknown" \ No newline at end of file + __version__ = "unknown" diff --git a/src/Hapi/catchment.py b/src/Hapi/catchment.py index 2e84651df..a52d2fcf6 100644 --- a/src/Hapi/catchment.py +++ b/src/Hapi/catchment.py @@ -29,13 +29,14 @@ from cleopatra.array_glyph import ArrayGlyph from loguru import logger from osgeo import gdal -from pyramids.multidataset import MultiDataset as Datacube from pyramids.dataset import Dataset +from pyramids.multidataset import MultiDataset as Datacube from Hapi.dem import DEM if TYPE_CHECKING: import matplotlib.animation + from Hapi.rrm.base_model import BaseConceptualModel STATE_VARIABLES = ["SP", "SM", "UZ", "LZ", "WC"] @@ -732,7 +733,6 @@ def read_lumped_model( `initial_condition` does not contain exactly 5 values. """ - if not inspect.isclass(lumped_model): raise ValueError( "ConceptualModel should be a module or a python file contains functions " @@ -1495,7 +1495,6 @@ def __init__( split (bool, optional): True to subset the data between the start and end dates. Default is False. """ - self.OutflowCell: list | None = None self.Snow: int | None = None self.Split = split @@ -1530,7 +1529,6 @@ def read_meteo_data(self, path: str, fmt: str): fmt (str): Date format string used to parse the date index. """ - df = pd.read_csv(path, index_col=0) df.index = [dt.datetime.strptime(date, fmt) for date in df.index] diff --git a/src/Hapi/dem.py b/src/Hapi/dem.py index 3873c87bf..ddc7d9f27 100644 --- a/src/Hapi/dem.py +++ b/src/Hapi/dem.py @@ -24,6 +24,7 @@ class DEM(Dataset): """ def __init__(self, src): + """Initialize the DEM instance.""" super().__init__(src) def flow_direction_index(self) -> np.ndarray: diff --git a/src/Hapi/inputs.py b/src/Hapi/inputs.py index e819666e6..b6106d143 100644 --- a/src/Hapi/inputs.py +++ b/src/Hapi/inputs.py @@ -15,10 +15,11 @@ import datetime as dt import os from pathlib import Path + import pandas as pd from geopandas import GeoDataFrame -from pyramids.multidataset import MultiDataset as Datacube from pyramids.dataset import Dataset +from pyramids.multidataset import MultiDataset as Datacube PARAMETERS_LIST = [ "01_tt", @@ -257,7 +258,7 @@ def create_lumped_inputs( fmt: str = "%Y-%m-%d", extension: str = ".tif", ) -> list: - """Create lumped inputs by averaging distributed raster values. + r"""Create lumped inputs by averaging distributed raster values. Reads a time series of rasters from the given directory, computes the spatial mean of each raster, and returns the averages as a diff --git a/src/Hapi/parameters/parameters.py b/src/Hapi/parameters/parameters.py index ca4834d3d..5ceaa1b65 100644 --- a/src/Hapi/parameters/parameters.py +++ b/src/Hapi/parameters/parameters.py @@ -542,7 +542,7 @@ def list_parameter_names() -> list[str]: def main(): - """Run the Hapi CLI for hydrological parameter operations. + r"""Run the Hapi CLI for hydrological parameter operations. This entry point provides three sub-commands: diff --git a/src/Hapi/routing.py b/src/Hapi/routing.py index 353a208cc..7cdd67266 100644 --- a/src/Hapi/routing.py +++ b/src/Hapi/routing.py @@ -170,7 +170,6 @@ def Tf(maxbas): >>> print(weights.sum()) 1.0 """ - wi = [] for x in range(1, maxbas + 1): # if maxbas=3 so x=[1,2,3] if ( @@ -234,7 +233,7 @@ def TriangularRouting2(q, maxbas=1): return q_r @staticmethod - def CalculateWeights(MAXBAS): + def CalculateWeights(maxbas): """Calculate triangular routing weights for a given MAXBAS value. Computes normalized weights based on the area under an @@ -243,7 +242,7 @@ def CalculateWeights(MAXBAS): computing exact trapezoidal areas under the triangle curve. Args: - MAXBAS (float): The MAXBAS routing parameter controlling + maxbas (float): The MAXBAS routing parameter controlling the number of time steps over which discharge is distributed. Can be an integer or a decimal value. @@ -261,10 +260,10 @@ def CalculateWeights(MAXBAS): yant = 0 Total = 0 # Just to verify how far from the unit is the result - TotalA = (MAXBAS * MAXBAS * np.sin(np.pi / 3)) / 2 - IntPart = np.floor(MAXBAS) - RealPart = MAXBAS - IntPart - PeakPoint = MAXBAS % 2 + TotalA = (maxbas * maxbas * np.sin(np.pi / 3)) / 2 + IntPart = np.floor(maxbas) + RealPart = maxbas - IntPart + PeakPoint = maxbas % 2 flag = 1 # 1 = "up" ; 2 = down if RealPart > 0: # even number 2,4,6,8,10 @@ -272,52 +271,51 @@ def CalculateWeights(MAXBAS): else: # odd number maxbasW = np.ones(int(IntPart)) - for x in range(int(MAXBAS)): - if x < (MAXBAS / 2.0) - 1: + for x in range(int(maxbas)): + if x < (maxbas / 2.0) - 1: # Integral of x dx with slope of 60 degree Equilateral triangle ynow = np.tan(np.pi / 3) * (x + 1) # ' Area / Total Area maxbasW[x] = ((ynow + yant) / 2) / TotalA else: # The area here is calculated by the formlua of a trapezoidal (B1+B2)*h /2 if flag == 1: - ynow = np.sin(np.pi / 3) * MAXBAS + ynow = np.sin(np.pi / 3) * maxbas if PeakPoint == 0: maxbasW[x] = ((ynow + yant) / 2) / TotalA else: - A1 = ((ynow + yant) / 2) * (MAXBAS / 2.0 - x) / TotalA + A1 = ((ynow + yant) / 2) * (maxbas / 2.0 - x) / TotalA yant = ynow - ynow = (MAXBAS * np.sin(np.pi / 3)) - ( - np.tan(np.pi / 3) * (x + 1 - MAXBAS / 2.0) + ynow = (maxbas * np.sin(np.pi / 3)) - ( + np.tan(np.pi / 3) * (x + 1 - maxbas / 2.0) ) - A2 = ((ynow + yant) * (x + 1 - MAXBAS / 2.0) / 2) / TotalA + A2 = ((ynow + yant) * (x + 1 - maxbas / 2.0) / 2) / TotalA maxbasW[x] = A1 + A2 flag = 2 else: # 'sum of the two height in the descending part of the triangle - ynow = MAXBAS * np.sin(np.pi / 3) - np.tan(np.pi / 3) * ( - x + 1 - MAXBAS / 2.0 - ) + ynow = maxbas * np.sin(np.pi / 3) - np.tan(np.pi / 3) * (x + 1 - maxbas / 2.0) # Multiplying by the height of the trapezoidal and dividing by 2 maxbasW[x] = ((ynow + yant) / 2) / TotalA Total = Total + maxbasW[x] yant = ynow - x = int(MAXBAS) + x = int(maxbas) # x = x + 1 if RealPart > 0: - if np.floor(MAXBAS) == 0: - MAXBAS = 1 + if np.floor(maxbas) == 0: + maxbas = 1 maxbasW[x] = 1 - NumberofWeights = 1 + # NumberofWeights = 1 else: - maxbasW[x] = (yant * (MAXBAS - (x)) / 2) / TotalA + maxbasW[x] = (yant * (maxbas - (x)) / 2) / TotalA Total = Total + maxbasW[x] - NumberofWeights = x + # NumberofWeights = x else: - NumberofWeights = x - 1 + # NumberofWeights = x - 1 + pass return maxbasW diff --git a/src/Hapi/rrm/distrrm.py b/src/Hapi/rrm/distrrm.py index b05e73330..e09a2a687 100644 --- a/src/Hapi/rrm/distrrm.py +++ b/src/Hapi/rrm/distrrm.py @@ -28,6 +28,7 @@ class DistributedRRM: """ def __init__(self): + """Distributed constructor.""" pass @staticmethod @@ -236,7 +237,6 @@ def DistMaxbas1(Model): - ``quz`` (numpy.ndarray): 3-D upper-zone discharge array ``(rows, cols, TS)`` in m3/s. """ - Maxbas = Model.Parameters[:, :, -1] for x in range(Model.rows): diff --git a/src/Hapi/rrm/hbv.py b/src/Hapi/rrm/hbv.py index 1297395c2..51d82736f 100644 --- a/src/Hapi/rrm/hbv.py +++ b/src/Hapi/rrm/hbv.py @@ -28,6 +28,7 @@ from __future__ import annotations import numpy as np + from Hapi.rrm.base_model import BaseConceptualModel # HBV base model parameters @@ -78,9 +79,6 @@ DEF_ST = [0.0, 10.0, 10.0, 10.0, 0.0] DEF_q0 = 0 -# Get random parameter set -# def get_random_pars(): -# return np.random.uniform(P_LB, P_UB) class HBV(BaseConceptualModel): """HBV-96 lumped conceptual rainfall-runoff model. @@ -167,7 +165,6 @@ def precipitation(temp, ltt, utt, prec, rfcf, sfcf): # type: ignore[override] >>> print(f"rainfall={rf}, snowfall={sf}") rainfall=5.0, snowfall=5.0 """ - if temp <= ltt: # if temp <= lower temp threshold rf = 0.0 # no rainfall all the precipitation will convert into snowfall sf = prec * sfcf @@ -241,7 +238,6 @@ def snow(cfmax, temp, ttm, cfr, cwh, rf, sf, wc_old, sp_old) -> tuple[float, flo >>> print(f"sp_new={sp_new:.2f}") sp_new=15.1 """ - if temp > ttm: # if temp > melting threshold # then either some snow will melt or the entire snow will melt if ( @@ -324,7 +320,6 @@ def soil(fc, beta, etf, temp, tm, e_corr, lp, c_flux, inf, ep, sm_old, uz_old) - >>> print(f"sm_new={sm_new:.2f}, uz_int_1={uz_int_1:.2f}") sm_new=101.13, uz_int_1=11.25 """ - qdr = max( sm_old + inf - fc, 0 ) # direct run off as soil moisture exceeded the field capacity @@ -461,7 +456,6 @@ def tf(maxbas) -> np.ndarray: wi = np.array(wi) / np.sum(wi) return wi # type: ignore[no-any-return] - def routing(self, q, maxbas=1): """Route discharge through a triangular transfer function. diff --git a/src/Hapi/rrm/hbv_lake.py b/src/Hapi/rrm/hbv_lake.py index f241fbfb6..85b462dbd 100644 --- a/src/Hapi/rrm/hbv_lake.py +++ b/src/Hapi/rrm/hbv_lake.py @@ -255,7 +255,6 @@ def _soil( >>> qdr 0 """ - # qdr = max(sm_old + inf - fc, 0) # direct run off as soil moisture exceeded the field capacity qdr = 0 _in = inf - qdr @@ -453,7 +452,6 @@ def _tf(maxbas): >>> len(w) 3 """ - wi = [] for x in range(1, maxbas + 1): # if maxbas=3 so x=[1,2,3] if ( @@ -867,7 +865,6 @@ def simulate( # type: ignore[override] >>> len(states) 6 """ - if init_st is None: # If unspecified, [0.0, 30.0, 30.0, 30.0, 0.0] mm st = [DEF_ST] # if not given take the default else: diff --git a/src/Hapi/rrm/parameters.py b/src/Hapi/rrm/parameters.py index d2b136fef..f8ffae48e 100644 --- a/src/Hapi/rrm/parameters.py +++ b/src/Hapi/rrm/parameters.py @@ -10,6 +10,7 @@ import datetime as dt import math import os + import numpy as np from osgeo import gdal from pyramids.dataset import Dataset diff --git a/src/Hapi/run.py b/src/Hapi/run.py index d3631c435..223d18395 100644 --- a/src/Hapi/run.py +++ b/src/Hapi/run.py @@ -33,6 +33,7 @@ class Run(Catchment): """ def __init__(self): + """Initialize the Run class.""" self.Qsim: np.ndarray | pd.DataFrame | None = None def RunHapi(self): diff --git a/src/Hapi/wrapper.py b/src/Hapi/wrapper.py index 6051368c5..4d7044330 100644 --- a/src/Hapi/wrapper.py +++ b/src/Hapi/wrapper.py @@ -128,7 +128,6 @@ def RRMWithlake(Model: Catchment, Lake: Lake, ll_temp=None, q_0=None): q_0 (float, optional): Initial discharge in m3/s. Defaults to None. """ - plake = Lake.MeteoData[:, 0] et = Lake.MeteoData[:, 1] t = Lake.MeteoData[:, 2] @@ -200,7 +199,6 @@ def FW1(Model: Catchment, ll_temp=None, q_0=None): q_0 (float, optional): Initial discharge in m3/s. Defaults to None. """ - # subcatchment distrrm.run_lumped_model(Model) @@ -251,7 +249,6 @@ def FW1Withlake(Model: Catchment, Lake: Lake, ll_temp=None, q_0=None): q_0 (float, optional): Initial discharge in m3/s. Defaults to None. """ - plake = Lake.MeteoData[:, 0] et = Lake.MeteoData[:, 1] t = Lake.MeteoData[:, 2] diff --git a/tests/rrm/catchment/test_lake.py b/tests/rrm/catchment/test_lake.py index 4f613ba1d..b9fb82540 100644 --- a/tests/rrm/catchment/test_lake.py +++ b/tests/rrm/catchment/test_lake.py @@ -1,5 +1,7 @@ import datetime as dt + import numpy as np + from Hapi.catchment import Lake from Hapi.rrm.hbv_lake import HBVLake diff --git a/tests/rrm/conftest.py b/tests/rrm/conftest.py index ca05d1f30..cb67b2e19 100644 --- a/tests/rrm/conftest.py +++ b/tests/rrm/conftest.py @@ -11,6 +11,7 @@ from tests.rrm.calibration.conftest import * from tests.rrm.catchment.conftest import * + @pytest.fixture(scope="session") def hapi_data_dir() -> str: data_dir = os.getenv("HAPI_DATA_DIR") diff --git a/tests/rrm/test_dist_parameters.py b/tests/rrm/test_dist_parameters.py index 75f11d840..aee7f7ba4 100644 --- a/tests/rrm/test_dist_parameters.py +++ b/tests/rrm/test_dist_parameters.py @@ -1,5 +1,6 @@ import numpy as np from osgeo import gdal + from Hapi.rrm.parameters import Parameters as DP diff --git a/tests/test_dem.py b/tests/test_dem.py index c479aa1e7..7f54ddf90 100644 --- a/tests/test_dem.py +++ b/tests/test_dem.py @@ -1,5 +1,6 @@ import numpy as np from osgeo import gdal + from Hapi.dem import DEM From c907986c3656f8f7bda96501f87dc4247e67734f Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Mon, 30 Mar 2026 21:32:40 +0200 Subject: [PATCH 06/19] reformat --- src/Hapi/catchment.py | 20 -------------------- src/Hapi/routing.py | 4 ++-- src/Hapi/rrm/hbv.py | 4 ++-- 3 files changed, 4 insertions(+), 24 deletions(-) diff --git a/src/Hapi/catchment.py b/src/Hapi/catchment.py index a52d2fcf6..eb8fbabd0 100644 --- a/src/Hapi/catchment.py +++ b/src/Hapi/catchment.py @@ -1316,26 +1316,6 @@ def plot_distributed_results( return anim - # def save_animation(self, video_format="gif", path="", save_frames=20): - # """saveAnimation. saveAnimation. - # - # Parameters - # ---------- - # video_format : [str], optional - # possible formats ['mp4','mov', 'avi', 'gif']. The default is "gif". - # path : [str], optional - # path inclusinf the video format. The default is ''. - # save_frames : [integer], optional - # speed of the video. The default is 20. - # - # Returns - # ------- - # None. - # """ - # Vis.SaveAnimation( - # self.anim, VideoFormat=video_format, Path=path, SaveFrames=save_frames - # ) - def save_results( self, flow_acc_path: str = "", diff --git a/src/Hapi/routing.py b/src/Hapi/routing.py index 7cdd67266..d31dfc4c4 100644 --- a/src/Hapi/routing.py +++ b/src/Hapi/routing.py @@ -173,10 +173,10 @@ def Tf(maxbas): wi = [] for x in range(1, maxbas + 1): # if maxbas=3 so x=[1,2,3] if ( - x <= (maxbas) / 2.0 + x <= maxbas / 2.0 ): # x <= 1.5 # half of values will form the rising limb and half falling limb # Growing transfer # rising limb - wi.append((x) / (maxbas + 2.0)) + wi.append(x / (maxbas + 2.0)) else: # Receding transfer # falling limb wi.append(1.0 - (x + 1) / (maxbas + 2.0)) diff --git a/src/Hapi/rrm/hbv.py b/src/Hapi/rrm/hbv.py index 51d82736f..ddda059ce 100644 --- a/src/Hapi/rrm/hbv.py +++ b/src/Hapi/rrm/hbv.py @@ -445,9 +445,9 @@ def tf(maxbas) -> np.ndarray: """ wi = [] for x in range(1, maxbas + 1): - if x <= (maxbas) / 2.0: + if x <= maxbas / 2.0: # Growing transfer - wi.append((x) / (maxbas + 2.0)) + wi.append(x / (maxbas + 2.0)) else: # Receding transfer wi.append(1.0 - (x + 1) / (maxbas + 2.0)) From 0396d2ea540560138fe4f1891e6b4531ccf97ce0 Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Mon, 30 Mar 2026 21:33:08 +0200 Subject: [PATCH 07/19] normalize package name to snake_case in pyproject.toml --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index cc5d17a8f..38940aa53 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [project] -name = "HAPI-Nile" +name = "hapi-nile" version = "1.7.0" description = "Distributed hydrological-model" readme = {file = "README.md", content-type = "text/markdown"} @@ -200,7 +200,7 @@ channels = ["conda-forge"] platforms = ["win-64", "linux-64"] [tool.pixi.pypi-dependencies] -HAPI-Nile = { path = ".", editable = true } +hapi-nile = { path = ".", editable = true } [tool.pixi.tasks] main = { cmd = "pytest -vvv --cov=src/Hapi -sv -m 'not plot and not fig_share' --cov-report=xml", description = "Run the main test suite" } From 8daf3676aba5e84f2f5ee83b46140911e4d43191 Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Mon, 30 Mar 2026 21:43:49 +0200 Subject: [PATCH 08/19] normalize package name to lowercase in code and configuration files --- .github/workflows/tests.yml | 2 +- pyproject.toml | 26 +++---- src/Hapi/__init__.py | 23 ------- src/hapi/__init__.py | 68 +++++++++++++++++++ src/{Hapi => hapi}/calibration.py | 4 +- src/{Hapi => hapi}/catchment.py | 4 +- src/{Hapi => hapi}/dem.py | 0 src/{Hapi => hapi}/hapi_warnings.py | 6 +- src/{Hapi => hapi}/inputs.py | 6 +- src/{Hapi => hapi}/parameters/.gitignore | 0 src/{Hapi => hapi}/parameters/parameters.py | 0 src/{Hapi => hapi}/routing.py | 12 ++-- src/{Hapi => hapi}/rrm/__init__.py | 0 src/{Hapi => hapi}/rrm/base_model.py | 22 +++--- src/{Hapi => hapi}/rrm/distrrm.py | 4 +- src/{Hapi => hapi}/rrm/hbv.py | 24 +++---- src/{Hapi => hapi}/rrm/hbv_bergestrom92.py | 22 +++--- src/{Hapi => hapi}/rrm/hbv_lake.py | 10 +-- src/{Hapi => hapi}/rrm/parameters.py | 0 src/{Hapi => hapi}/run.py | 6 +- src/{Hapi => hapi}/wrapper.py | 8 +-- tests/calibration/distributed_mode_calib.py | 6 +- tests/calibration/lumped_calibration.py | 8 +-- tests/rrm/calibration/test_rrm_calibration.py | 6 +- tests/rrm/catchment/test_lake.py | 4 +- tests/rrm/catchment/test_rrm_catchment.py | 8 +-- .../rrm/conceptual/test_conceptual_models.py | 6 +- tests/rrm/conftest.py | 2 +- tests/rrm/parameters/test_parameters.py | 8 +-- tests/rrm/parameters/test_parameters_cli.py | 6 +- tests/rrm/test_dist_parameters.py | 2 +- tests/rrm/test_rrm_inputs.py | 2 +- tests/run/distributed_mode_run.py | 6 +- tests/run/lumped_run.py | 8 +-- tests/sensitivity_analysis.py | 8 +-- tests/test_dem.py | 2 +- 36 files changed, 187 insertions(+), 142 deletions(-) delete mode 100644 src/Hapi/__init__.py create mode 100644 src/hapi/__init__.py rename src/{Hapi => hapi}/calibration.py (99%) rename src/{Hapi => hapi}/catchment.py (99%) rename src/{Hapi => hapi}/dem.py (100%) rename src/{Hapi => hapi}/hapi_warnings.py (88%) rename src/{Hapi => hapi}/inputs.py (99%) rename src/{Hapi => hapi}/parameters/.gitignore (100%) rename src/{Hapi => hapi}/parameters/parameters.py (100%) rename src/{Hapi => hapi}/routing.py (97%) rename src/{Hapi => hapi}/rrm/__init__.py (100%) rename src/{Hapi => hapi}/rrm/base_model.py (96%) rename src/{Hapi => hapi}/rrm/distrrm.py (99%) rename src/{Hapi => hapi}/rrm/hbv.py (97%) rename src/{Hapi => hapi}/rrm/hbv_bergestrom92.py (97%) rename src/{Hapi => hapi}/rrm/hbv_lake.py (99%) rename src/{Hapi => hapi}/rrm/parameters.py (100%) rename src/{Hapi => hapi}/run.py (99%) rename src/{Hapi => hapi}/wrapper.py (98%) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1276e9278..eb61f0c4b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -35,7 +35,7 @@ jobs: run: | pixi run -e ${{ matrix.environment }} test-all env: - HAPI_DATA_DIR: ${{ github.workspace }}/src/Hapi/parameters + HAPI_DATA_DIR: ${{ github.workspace }}/src/hapi/parameters - name: Upload coverage reports to Codecov with GitHub Action uses: codecov/codecov-action@v5 diff --git a/pyproject.toml b/pyproject.toml index 38940aa53..026364a04 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -81,9 +81,9 @@ documentation = "https://serapieum-of-alex.github.io/Hapi" Changelog = "https://github.com/Serapieum-of-alex/Hapi/blob/main/docs/change-log.md" [project.scripts] -download-parameters = "Hapi.parameters.parameters:main" -download-parameter-set = "Hapi.parameters.parameters:main" -list-parameter-names = "Hapi.parameters.parameters:main" +download-parameters = "hapi.parameters.parameters:main" +download-parameter-set = "hapi.parameters.parameters:main" +list-parameter-names = "hapi.parameters.parameters:main" [build-system] @@ -94,10 +94,10 @@ build-backend = "setuptools.build_meta" [tool.setuptools.packages.find] where = ["src"] -include = ["Hapi", "Hapi.*"] +include = ["hapi", "hapi.*"] [tool.setuptools.package-data] -Hapi = ["*.yaml", "include/gdal/*.h"] +hapi = ["*.yaml", "include/gdal/*.h"] [tool.flake8] ignore = ["E203", "E266", "E501", "W503", "E722", "C901", "E741", "E731"] @@ -154,10 +154,10 @@ exclude = [ [[tool.mypy.overrides]] module = [ - "Hapi.catchment", - "Hapi.run", - "Hapi.calibration", - "Hapi.wrapper", + "hapi.catchment", + "hapi.run", + "hapi.calibration", + "hapi.wrapper", ] # These modules use a builder pattern: attributes are typed X | None in # __init__ and populated by separate read_*() methods before use. Methods @@ -176,7 +176,7 @@ disable_error_code = [ ] [[tool.mypy.overrides]] -module = "Hapi.rrm.base_model" +module = "hapi.rrm.base_model" disable_error_code = ["empty-body"] @@ -203,9 +203,9 @@ platforms = ["win-64", "linux-64"] hapi-nile = { path = ".", editable = true } [tool.pixi.tasks] -main = { cmd = "pytest -vvv --cov=src/Hapi -sv -m 'not plot and not fig_share' --cov-report=xml", description = "Run the main test suite" } -plot = { cmd = "pytest -vvv --cov=src/Hapi -sv -m 'plot' --cov-report=xml", description = "Run plot test suite" } -test-all = { cmd = "pytest -vvv --cov=src/Hapi -sv -m 'not fig_share' --cov-report=xml --cov-report=term-missing", description = "Run all test suite" } +main = { cmd = "pytest -vvv --cov=src/hapi -sv -m 'not plot and not fig_share' --cov-report=xml", description = "Run the main test suite" } +plot = { cmd = "pytest -vvv --cov=src/hapi -sv -m 'plot' --cov-report=xml", description = "Run plot test suite" } +test-all = { cmd = "pytest -vvv --cov=src/hapi -sv -m 'not fig_share' --cov-report=xml --cov-report=term-missing", description = "Run all test suite" } notebooks = { cmd = "pytest --nbval --nbval-lax --verbose examples/notebooks", description = "Check notebooks" } build-dist = { cmd = "python -m build", description = "Build sdist and wheel for PyPI" } publish-pypi = { cmd = "twine upload --non-interactive --repository pypi dist/*", depends-on = ["build-dist"], description = "Build and upload package to PyPI" } diff --git a/src/Hapi/__init__.py b/src/Hapi/__init__.py deleted file mode 100644 index e1fce36ea..000000000 --- a/src/Hapi/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -"""Hapi - Hydrological library for Python. - -**Hapi** is a Python package providing fast and flexible, way to build distributed -hydrological model using lumped conceptual model - -Main Features -------------- -Here are just a few of the things that pandas does well: - - - Easy handling of rasters data downloaded from global data and easy way to - manipulate the data to arrange it to run the model - - Easy calibration of the model using Harmony search method and Genetic Algorithms - - flexible GIS function to process rasters interpolate values and georeference - calculated discharge values to the correct place -""" -from __future__ import annotations - -from importlib.metadata import PackageNotFoundError, version - -try: - __version__ = version(__name__) -except PackageNotFoundError: # pragma: no cover - __version__ = "unknown" diff --git a/src/hapi/__init__.py b/src/hapi/__init__.py new file mode 100644 index 000000000..05ec77cd4 --- /dev/null +++ b/src/hapi/__init__.py @@ -0,0 +1,68 @@ +"""Hapi - Hydrological library for Python. + +**Hapi** is a Python package providing fast and flexible, way to build distributed +hydrological model using lumped conceptual model + +Main Features +------------- +Here are just a few of the things that pandas does well: + + - Easy handling of rasters data downloaded from global data and easy way to + manipulate the data to arrange it to run the model + - Easy calibration of the model using Harmony search method and Genetic Algorithms + - flexible GIS function to process rasters interpolate values and georeference + calculated discharge values to the correct place +""" +from __future__ import annotations + +import importlib +import sys +import warnings +from importlib.abc import MetaPathFinder +from importlib.metadata import PackageNotFoundError, version + +try: + __version__ = version("hapi-nile") +except PackageNotFoundError: # pragma: no cover + __version__ = "unknown" + + +class _HapiBackwardCompatFinder(MetaPathFinder): + """Allow ``import Hapi`` / ``from Hapi.x import y`` on case-sensitive systems. + + Redirects any ``Hapi`` or ``Hapi.*`` import to ``hapi`` / ``hapi.*`` + and emits a DeprecationWarning so users know to update their code. + """ + + _migrating: bool = False + + def find_module(self, fullname: str, path: object = None) -> _HapiBackwardCompatFinder | None: + if self._migrating: + return None + if fullname == "Hapi" or fullname.startswith("Hapi."): + return self + return None + + def load_module(self, fullname: str) -> object: + if fullname in sys.modules: + return sys.modules[fullname] + + new_name = "hapi" + fullname[4:] # replace leading "Hapi" + warnings.warn( + f"Importing from '{fullname}' is deprecated. " + f"Use '{new_name}' instead. " + "The 'Hapi' package name will be removed in a future version.", + DeprecationWarning, + stacklevel=2, + ) + self._migrating = True + try: + module = importlib.import_module(new_name) + finally: + self._migrating = False + + sys.modules[fullname] = module + return module + + +sys.meta_path.insert(0, _HapiBackwardCompatFinder()) diff --git a/src/Hapi/calibration.py b/src/hapi/calibration.py similarity index 99% rename from src/Hapi/calibration.py rename to src/hapi/calibration.py index 9fe641282..b2fbcafc3 100644 --- a/src/Hapi/calibration.py +++ b/src/hapi/calibration.py @@ -14,8 +14,8 @@ from Oasis.harmonysearch import HSapi from Oasis.optimization import Optimization -from Hapi.catchment import Catchment -from Hapi.wrapper import Wrapper +from hapi.catchment import Catchment +from hapi.wrapper import Wrapper class Calibration(Catchment): diff --git a/src/Hapi/catchment.py b/src/hapi/catchment.py similarity index 99% rename from src/Hapi/catchment.py rename to src/hapi/catchment.py index eb8fbabd0..4fd284e95 100644 --- a/src/Hapi/catchment.py +++ b/src/hapi/catchment.py @@ -32,12 +32,12 @@ from pyramids.dataset import Dataset from pyramids.multidataset import MultiDataset as Datacube -from Hapi.dem import DEM +from hapi.dem import DEM if TYPE_CHECKING: import matplotlib.animation - from Hapi.rrm.base_model import BaseConceptualModel + from hapi.rrm.base_model import BaseConceptualModel STATE_VARIABLES = ["SP", "SM", "UZ", "LZ", "WC"] diff --git a/src/Hapi/dem.py b/src/hapi/dem.py similarity index 100% rename from src/Hapi/dem.py rename to src/hapi/dem.py diff --git a/src/Hapi/hapi_warnings.py b/src/hapi/hapi_warnings.py similarity index 88% rename from src/Hapi/hapi_warnings.py rename to src/hapi/hapi_warnings.py index 98ea84cae..c468e7c02 100644 --- a/src/Hapi/hapi_warnings.py +++ b/src/hapi/hapi_warnings.py @@ -5,7 +5,7 @@ specific warning categories during runtime. Examples: - >>> from Hapi.hapi_warnings import InstabilityWarning + >>> from hapi.hapi_warnings import InstabilityWarning >>> import warnings >>> warnings.warn( ... "Simulation diverged at step 5", @@ -25,7 +25,7 @@ class InstabilityWarning(UserWarning): results, such as diverging flows or extreme parameter values. Examples: - >>> from Hapi.hapi_warnings import InstabilityWarning + >>> from hapi.hapi_warnings import InstabilityWarning >>> import warnings >>> with warnings.catch_warnings(record=True) as w: ... warnings.simplefilter("always") @@ -49,7 +49,7 @@ def SilencePandasWarning(): pandas when deprecated APIs are used. Examples: - >>> from Hapi.hapi_warnings import SilencePandasWarning + >>> from hapi.hapi_warnings import SilencePandasWarning >>> SilencePandasWarning() """ warnings.simplefilter(action="ignore", category=FutureWarning) diff --git a/src/Hapi/inputs.py b/src/hapi/inputs.py similarity index 99% rename from src/Hapi/inputs.py rename to src/hapi/inputs.py index b6106d143..316bd4b9d 100644 --- a/src/Hapi/inputs.py +++ b/src/hapi/inputs.py @@ -56,7 +56,7 @@ class Inputs: alignment (coordinate system, rows, columns, resolution). Examples: - >>> from Hapi.inputs import Inputs + >>> from hapi.inputs import Inputs >>> inp = Inputs("data/dem.tif") """ @@ -91,7 +91,7 @@ def prepare_inputs( FileNotFoundError: If ``inputs_dir`` does not exist. Examples: - >>> from Hapi.inputs import Inputs + >>> from hapi.inputs import Inputs >>> inp = Inputs("GIS/inputs/acc4000.tif") >>> inp.prepare_inputs( ... "Precipitation/CHIRPS/Daily/", @@ -287,7 +287,7 @@ def create_lumped_inputs( the corresponding raster in chronological order. Examples: - >>> from Hapi.inputs import Inputs + >>> from hapi.inputs import Inputs >>> avg = Inputs.create_lumped_inputs( ... "tests/rrm/data/coello/prec", ... regex_string=r"\\d{4}.\\d{2}.\\d{2}", diff --git a/src/Hapi/parameters/.gitignore b/src/hapi/parameters/.gitignore similarity index 100% rename from src/Hapi/parameters/.gitignore rename to src/hapi/parameters/.gitignore diff --git a/src/Hapi/parameters/parameters.py b/src/hapi/parameters/parameters.py similarity index 100% rename from src/Hapi/parameters/parameters.py rename to src/hapi/parameters/parameters.py diff --git a/src/Hapi/routing.py b/src/hapi/routing.py similarity index 97% rename from src/Hapi/routing.py rename to src/hapi/routing.py index d31dfc4c4..b6164d38a 100644 --- a/src/Hapi/routing.py +++ b/src/hapi/routing.py @@ -65,7 +65,7 @@ def Muskingum(inflow, Qinitial, k, x, dt): Examples: >>> import numpy as np - >>> from Hapi.routing import Routing + >>> from hapi.routing import Routing >>> inflow = np.array([0, 1, 3, 7, 10, 9, 6, 3, 1, 0]) >>> q_routed = Routing.Muskingum( ... inflow, Qinitial=0, k=2, x=0.2, dt=1 @@ -122,7 +122,7 @@ def Muskingum_V( Examples: >>> import numpy as np - >>> from Hapi.routing import Routing + >>> from hapi.routing import Routing >>> inflow = np.array([0, 1, 3, 7, 10, 9, 6, 3, 1, 0]) >>> q_routed = Routing.Muskingum_V( ... inflow, Qinitial=0, k=2, x=0.2, dt=1 @@ -165,7 +165,7 @@ def Tf(maxbas): ``maxbas`` that sum to 1.0. Examples: - >>> from Hapi.routing import Routing + >>> from hapi.routing import Routing >>> weights = Routing.Tf(5) >>> print(weights.sum()) 1.0 @@ -210,7 +210,7 @@ def TriangularRouting2(q, maxbas=1): Examples: >>> import numpy as np - >>> from Hapi.routing import Routing + >>> from hapi.routing import Routing >>> q = np.array([0.0, 1.0, 3.0, 7.0, 10.0, 9.0, 6.0]) >>> q_routed = Routing.TriangularRouting2(q, maxbas=3) """ @@ -252,7 +252,7 @@ def CalculateWeights(maxbas): ``floor(MAXBAS) + 1`` for non-integer values. Examples: - >>> from Hapi.routing import Routing + >>> from hapi.routing import Routing >>> weights = Routing.CalculateWeights(5) >>> print(weights) [0.08 0.24 0.36 0.24 0.08] @@ -345,7 +345,7 @@ def TriangularRouting1(Q, MAXBAS): Examples: >>> import numpy as np - >>> from Hapi.routing import Routing + >>> from hapi.routing import Routing >>> Q = np.array([0.0, 1.0, 3.0, 7.0, 10.0, 9.0, 6.0]) >>> q_out = Routing.TriangularRouting1(Q, MAXBAS=5) """ diff --git a/src/Hapi/rrm/__init__.py b/src/hapi/rrm/__init__.py similarity index 100% rename from src/Hapi/rrm/__init__.py rename to src/hapi/rrm/__init__.py diff --git a/src/Hapi/rrm/base_model.py b/src/hapi/rrm/base_model.py similarity index 96% rename from src/Hapi/rrm/base_model.py rename to src/hapi/rrm/base_model.py index 0a9273778..edf50440b 100644 --- a/src/Hapi/rrm/base_model.py +++ b/src/hapi/rrm/base_model.py @@ -1,6 +1,6 @@ """Base class for conceptual rainfall-runoff models. -The ``Hapi.rrm.base_model`` module defines the abstract base class +The ``hapi.rrm.base_model`` module defines the abstract base class :class:`BaseConceptualModel` from which all conceptual hydrological models in the Hapi framework inherit. The class prescribes a common interface of subroutines that every model must implement: @@ -17,9 +17,9 @@ - **simulate** -- run the full model over a precipitation time series. Concrete implementations include -:class:`~Hapi.rrm.hbv.HBV`, -:class:`~Hapi.rrm.hbv_bergestrom92.HBVBergestrom92`, and -:class:`~Hapi.rrm.hbv_lake.HBVLake`. +:class:`~hapi.rrm.hbv.HBV`, +:class:`~hapi.rrm.hbv_bergestrom92.HBVBergestrom92`, and +:class:`~hapi.rrm.hbv_lake.HBVLake`. """ from __future__ import annotations @@ -54,7 +54,7 @@ class BaseConceptualModel(ABC): Examples: Subclass ``BaseConceptualModel`` to create a custom model: - >>> from Hapi.rrm.hbv import HBV + >>> from hapi.rrm.hbv import HBV >>> model = HBV() >>> rf, sf = model.precipitation( ... temp=10.0, ltt=0.0, utt=2.0, prec=15.0, @@ -97,7 +97,7 @@ def precipitation( in mm. Examples: - >>> from Hapi.rrm.hbv import HBV + >>> from hapi.rrm.hbv import HBV >>> rf, sf = HBV.precipitation( ... temp=10.0, ltt=0.0, utt=2.0, prec=15.0, ... rfcf=1.0, sfcf=1.0, @@ -139,7 +139,7 @@ def snow( [mm], and ``sp_new`` is the updated snow pack [mm]. Examples: - >>> from Hapi.rrm.hbv import HBV + >>> from hapi.rrm.hbv import HBV >>> inf, wc_new, sp_new = HBV.snow( ... cfmax=0.1, temp=5.0, ttm=0.0, cfr=0.05, ... cwh=0.1, rf=2.0, sf=0.0, @@ -200,7 +200,7 @@ def soil( zone [mm]. Examples: - >>> from Hapi.rrm.hbv import HBV + >>> from hapi.rrm.hbv import HBV >>> sm_new, uz_int_1 = HBV.soil( ... fc=200.0, beta=2.0, etf=0.1, temp=20.0, ... tm=18.0, e_corr=1.0, lp=0.3, c_flux=0.01, @@ -244,7 +244,7 @@ def response( storage [mm]. Examples: - >>> from Hapi.rrm.hbv import HBV + >>> from hapi.rrm.hbv import HBV >>> q_0, q_1, uz_new, lz_new = HBV.response( ... perc=0.5, alpha=0.5, k=0.01, k1=0.001, ... lz_old=20.0, uz_int_1=15.0, @@ -275,7 +275,7 @@ def routing(self, q: np.ndarray, maxbas: int = 1) -> np.ndarray: Examples: >>> import numpy as np - >>> from Hapi.rrm.hbv import HBV + >>> from hapi.rrm.hbv import HBV >>> model = HBV() >>> q = np.array([0.0, 0.0, 5.0, 3.0, 1.0, 0.0]) >>> q_routed = model.routing(q, maxbas=3) @@ -330,7 +330,7 @@ def simulate( Examples: >>> import numpy as np - >>> from Hapi.rrm.hbv import HBV + >>> from hapi.rrm.hbv import HBV >>> model = HBV() >>> par = np.array([ ... 1.0, 200.0, 2.0, 0.1, 0.3, 0.01, diff --git a/src/Hapi/rrm/distrrm.py b/src/hapi/rrm/distrrm.py similarity index 99% rename from src/Hapi/rrm/distrrm.py rename to src/hapi/rrm/distrrm.py index e09a2a687..80a648603 100644 --- a/src/Hapi/rrm/distrrm.py +++ b/src/hapi/rrm/distrrm.py @@ -5,7 +5,7 @@ then routes the resulting discharge between cells following the river network defined by a flow direction raster. -The module belongs to the ``Hapi.rrm`` package and supports both +The module belongs to the ``hapi.rrm`` package and supports both Muskingum and triangular (MAXBAS) routing strategies. """ from __future__ import annotations @@ -13,7 +13,7 @@ import numpy as np from pyramids.dataset import Dataset -from Hapi.routing import Routing as routing +from hapi.routing import Routing as routing class DistributedRRM: diff --git a/src/Hapi/rrm/hbv.py b/src/hapi/rrm/hbv.py similarity index 97% rename from src/Hapi/rrm/hbv.py rename to src/hapi/rrm/hbv.py index ddda059ce..7bfa309db 100644 --- a/src/Hapi/rrm/hbv.py +++ b/src/hapi/rrm/hbv.py @@ -1,6 +1,6 @@ """Lumped Conceptual HBV model. -The ``Hapi.rrm.hbv`` module implements the HBV-96 lumped conceptual +The ``hapi.rrm.hbv`` module implements the HBV-96 lumped conceptual hydrological model. The model consists of precipitation partitioning, snow accumulation and melt, soil moisture accounting, and a response routine that converts precipitation into runoff. State variables are @@ -29,7 +29,7 @@ import numpy as np -from Hapi.rrm.base_model import BaseConceptualModel +from hapi.rrm.base_model import BaseConceptualModel # HBV base model parameters P_LB = [ @@ -98,11 +98,11 @@ class HBV(BaseConceptualModel): discharge via recession coefficients. The class inherits from - :class:`~Hapi.rrm.base_model.BaseConceptualModel` and provides + :class:`~hapi.rrm.base_model.BaseConceptualModel` and provides concrete implementations of all required subroutines. Examples: - >>> from Hapi.rrm.hbv import HBV + >>> from hapi.rrm.hbv import HBV >>> model = HBV() >>> rf, sf = model.precipitation( ... temp=5.0, ltt=0.0, utt=2.0, prec=10.0, @@ -138,7 +138,7 @@ def precipitation(temp, ltt, utt, prec, rfcf, sfcf): # type: ignore[override] Temperature above the upper threshold produces only rainfall: - >>> from Hapi.rrm.hbv import HBV + >>> from hapi.rrm.hbv import HBV >>> rf, sf = HBV.precipitation( ... temp=10.0, ltt=0.0, utt=2.0, prec=15.0, ... rfcf=1.0, sfcf=1.0, @@ -214,7 +214,7 @@ def snow(cfmax, temp, ttm, cfr, cwh, rf, sf, wc_old, sp_old) -> tuple[float, flo When temperature exceeds the melt threshold, snow melts and infiltration occurs: - >>> from Hapi.rrm.hbv import HBV + >>> from hapi.rrm.hbv import HBV >>> inf, wc_new, sp_new = HBV.snow( ... cfmax=0.1, temp=5.0, ttm=0.0, cfr=0.05, ... cwh=0.1, rf=2.0, sf=0.0, @@ -311,7 +311,7 @@ def soil(fc, beta, etf, temp, tm, e_corr, lp, c_flux, inf, ep, sm_old, uz_old) - Compute soil moisture update for a warm day with infiltration: - >>> from Hapi.rrm.hbv import HBV + >>> from hapi.rrm.hbv import HBV >>> sm_new, uz_int_1 = HBV.soil( ... fc=200.0, beta=2.0, etf=0.1, temp=20.0, ... tm=18.0, e_corr=1.0, lp=0.3, c_flux=0.01, @@ -380,7 +380,7 @@ def response(perc, alpha, k, k1, lz_old, uz_int_1) -> tuple[float, float, float, Examples: Compute discharge from upper and lower zone storages: - >>> from Hapi.rrm.hbv import HBV + >>> from hapi.rrm.hbv import HBV >>> q_0, q_1, uz_new, lz_new = HBV.response( ... perc=0.5, alpha=0.5, k=0.01, k1=0.001, ... lz_old=20.0, uz_int_1=15.0, @@ -436,7 +436,7 @@ def tf(maxbas) -> np.ndarray: ``maxbas``. Examples: - >>> from Hapi.rrm.hbv import HBV + >>> from hapi.rrm.hbv import HBV >>> weights = HBV.tf(5) >>> print(weights.round(4)) [0.1429 0.2857 0.2857 0.1429 0.1429] @@ -478,7 +478,7 @@ def routing(self, q, maxbas=1): Examples: >>> import numpy as np - >>> from Hapi.rrm.hbv import HBV + >>> from hapi.rrm.hbv import HBV >>> model = HBV() >>> q = np.array([0.0, 0.0, 5.0, 3.0, 1.0, 0.0]) >>> q_routed = model.routing(q, maxbas=3) @@ -550,7 +550,7 @@ def step_run(self, p: np.ndarray, v: np.ndarray, state_variable: np.ndarray, sno Run a single step without snow: >>> import numpy as np - >>> from Hapi.rrm.hbv import HBV + >>> from hapi.rrm.hbv import HBV >>> model = HBV() >>> par = np.array([ ... 1.0, 200.0, 2.0, 0.1, 0.3, 0.01, @@ -700,7 +700,7 @@ def simulate(self, prec, temp, et, par, init_st=None, ll_temp=None, q_init=None, Run a short simulation without snow: >>> import numpy as np - >>> from Hapi.rrm.hbv import HBV + >>> from hapi.rrm.hbv import HBV >>> model = HBV() >>> par = np.array([ ... 1.0, 200.0, 2.0, 0.1, 0.3, 0.01, diff --git a/src/Hapi/rrm/hbv_bergestrom92.py b/src/hapi/rrm/hbv_bergestrom92.py similarity index 97% rename from src/Hapi/rrm/hbv_bergestrom92.py rename to src/hapi/rrm/hbv_bergestrom92.py index 1e043a398..e274ad4b2 100644 --- a/src/Hapi/rrm/hbv_bergestrom92.py +++ b/src/hapi/rrm/hbv_bergestrom92.py @@ -1,6 +1,6 @@ """HBV Bergestrom 1992 Lumped Conceptual Hydrological Model. -The ``Hapi.rrm.hbv_bergestrom92`` module implements the HBV-96 lumped +The ``hapi.rrm.hbv_bergestrom92`` module implements the HBV-96 lumped conceptual model based on Bergstrom (1992), using two reservoirs with three linear responses: surface runoff, interflow, and baseflow. @@ -28,7 +28,7 @@ import numpy as np -from Hapi.rrm.base_model import BaseConceptualModel +from hapi.rrm.base_model import BaseConceptualModel DEF_ST = [0.0, 10.0, 10.0, 10.0, 0.0] DEF_q0 = 0 @@ -43,12 +43,12 @@ class HBVBergestrom92(BaseConceptualModel): runoff, interflow, and baseflow. The model inherits from - :class:`~Hapi.rrm.base_model.BaseConceptualModel` and implements + :class:`~hapi.rrm.base_model.BaseConceptualModel` and implements the ``precipitation``, ``snow``, ``soil``, ``response``, ``routing``, and ``simulate`` methods. Examples: - >>> from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 + >>> from hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 >>> model = HBVBergestrom92() """ @@ -79,7 +79,7 @@ def precipitation(prec, temp, tt, rfcf, sfcf): # type: ignore[override] - **sf** (*float*): Snowfall [mm]. Examples: - >>> from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 + >>> from hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 >>> rf, sf = HBVBergestrom92.precipitation( ... prec=10.0, temp=-2.0, tt=0.0, rfcf=1.0, sfcf=0.8 ... ) @@ -155,7 +155,7 @@ def snow(temp, rf, sf, wc_old, sp_old, tt, cfmax, cfr, cwh): # type: ignore[ove - **sp_new** (*float*): New snow pack state [mm]. Examples: - >>> from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 + >>> from hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 >>> inf, wc_new, sp_new = HBVBergestrom92.snow( ... temp=5.0, rf=3.0, sf=0.0, wc_old=2.0, ... sp_old=10.0, tt=0.0, cfmax=3.0, cfr=0.05, @@ -241,7 +241,7 @@ def soil(temp, inf, ep, sm_old, uz_old, tm, fc, beta, e_corr, lp): # type: igno into the upper zone [mm]. Examples: - >>> from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 + >>> from hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 >>> sm_new, uz_int_1 = HBVBergestrom92.soil( ... temp=20.0, inf=5.0, ep=3.0, sm_old=50.0, ... uz_old=10.0, tm=18.0, fc=200.0, beta=2.0, @@ -319,7 +319,7 @@ def response(lz_old, uz_int_1, perc, k, k1, k2, uzl): # type: ignore[override] - **lz_new** (*float*): New lower zone storage [mm]. Examples: - >>> from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 + >>> from hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 >>> q_uz, q_lz, uz_new, lz_new = HBVBergestrom92.response( ... lz_old=30.0, uz_int_1=20.0, perc=1.0, k=0.005, ... k1=0.03, k2=0.015, uzl=10.0, @@ -383,7 +383,7 @@ def tf(maxbas): function, summing to 1.0. Examples: - >>> from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 + >>> from hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 >>> import numpy as np >>> w = HBVBergestrom92.tf(3) >>> np.isclose(w.sum(), 1.0) @@ -424,7 +424,7 @@ def routing(self, q, maxbas=1): AssertionError: If ``maxbas`` is less than 1. Examples: - >>> from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 + >>> from hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 >>> import numpy as np >>> model = HBVBergestrom92() >>> q = np.array([0.0, 1.0, 2.0, 3.0, 2.0, 1.0]) @@ -497,7 +497,7 @@ def simulate( ``[sp, sm, uz, lz, wc]`` in mm. Examples: - >>> from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 + >>> from hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 >>> import numpy as np >>> np.random.seed(42) >>> model = HBVBergestrom92() diff --git a/src/Hapi/rrm/hbv_lake.py b/src/hapi/rrm/hbv_lake.py similarity index 99% rename from src/Hapi/rrm/hbv_lake.py rename to src/hapi/rrm/hbv_lake.py index 85b462dbd..696667212 100644 --- a/src/Hapi/rrm/hbv_lake.py +++ b/src/hapi/rrm/hbv_lake.py @@ -1,6 +1,6 @@ """HBV model with a lake function. -The ``Hapi.rrm.hbv_lake`` module provides the ``HBVLake`` class, an +The ``hapi.rrm.hbv_lake`` module provides the ``HBVLake`` class, an extension of the HBV-96 rainfall-runoff model that includes an explicit lake representation. Inflow to the lake is computed using the standard HBV precipitation, snow, soil, and response routines. Lake outflow is @@ -20,7 +20,7 @@ import numpy as np from scipy.interpolate import InterpolatedUnivariateSpline as interp11 -from Hapi.rrm.base_model import BaseConceptualModel +from hapi.rrm.base_model import BaseConceptualModel # initial values for state variables # [sp, sm, uz, lz, wc] @@ -48,7 +48,7 @@ class HBVLake(BaseConceptualModel): Examples: >>> import numpy as np - >>> from Hapi.rrm.hbv_lake import HBVLake, DEF_ST, DEF_q0 + >>> from hapi.rrm.hbv_lake import HBVLake, DEF_ST, DEF_q0 >>> model = HBVLake() >>> n = 10 >>> prec = np.array([5.0] * n) @@ -698,7 +698,7 @@ def _step_run(self, parameters, catchment_parameters, v, state_variables, curve) Examples: >>> import numpy as np - >>> from Hapi.rrm.hbv_lake import HBVLake, DEF_ST + >>> from hapi.rrm.hbv_lake import HBVLake, DEF_ST >>> model = HBVLake() >>> par = [200, 2.0, 0.01, 0.6, 0.5, 0.01, 0.05, ... 1.0, 1.0, 1.0, 1.0] @@ -843,7 +843,7 @@ def simulate( # type: ignore[override] Examples: >>> import numpy as np - >>> from Hapi.rrm.hbv_lake import HBVLake, DEF_ST, DEF_q0 + >>> from hapi.rrm.hbv_lake import HBVLake, DEF_ST, DEF_q0 >>> model = HBVLake() >>> n = 5 >>> prec = np.array([4.0] * n) diff --git a/src/Hapi/rrm/parameters.py b/src/hapi/rrm/parameters.py similarity index 100% rename from src/Hapi/rrm/parameters.py rename to src/hapi/rrm/parameters.py diff --git a/src/Hapi/run.py b/src/hapi/run.py similarity index 99% rename from src/Hapi/run.py rename to src/hapi/run.py index 223d18395..510840c0f 100644 --- a/src/Hapi/run.py +++ b/src/hapi/run.py @@ -11,10 +11,10 @@ import pandas as pd from loguru import logger -from Hapi.catchment import Catchment +from hapi.catchment import Catchment -# from Hapi.hm.saintvenant import SaintVenant -from Hapi.wrapper import Wrapper +# from hapi.hm.saintvenant import SaintVenant +from hapi.wrapper import Wrapper class Run(Catchment): diff --git a/src/Hapi/wrapper.py b/src/hapi/wrapper.py similarity index 98% rename from src/Hapi/wrapper.py rename to src/hapi/wrapper.py index 4d7044330..29db8e479 100644 --- a/src/Hapi/wrapper.py +++ b/src/hapi/wrapper.py @@ -12,12 +12,12 @@ import numpy as np -from Hapi.routing import Routing as routing -from Hapi.rrm.distrrm import DistributedRRM as distrrm -from Hapi.rrm.hbv_lake import HBVLake +from hapi.routing import Routing as routing +from hapi.rrm.distrrm import DistributedRRM as distrrm +from hapi.rrm.hbv_lake import HBVLake if TYPE_CHECKING: - from Hapi.catchment import Catchment, Lake + from hapi.catchment import Catchment, Lake class Wrapper: diff --git a/tests/calibration/distributed_mode_calib.py b/tests/calibration/distributed_mode_calib.py index 020ca08c5..9f9b8c126 100644 --- a/tests/calibration/distributed_mode_calib.py +++ b/tests/calibration/distributed_mode_calib.py @@ -11,9 +11,9 @@ import statista.descriptors as metrics from osgeo import gdal -from Hapi.calibration import Calibration -from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBV -from Hapi.rrm.parameters import Parameters as DP +from hapi.calibration import Calibration +from hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBV +from hapi.rrm.parameters import Parameters as DP # %% Paths Path = Comp + "/data/distributed/coello" diff --git a/tests/calibration/lumped_calibration.py b/tests/calibration/lumped_calibration.py index d2384fbbb..cc4769301 100644 --- a/tests/calibration/lumped_calibration.py +++ b/tests/calibration/lumped_calibration.py @@ -4,10 +4,10 @@ import pandas as pd import statista.descriptors as metrics -from Hapi.calibration import Calibration -from Hapi.routing import Routing -from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped -from Hapi.run import Run +from hapi.calibration import Calibration +from hapi.routing import Routing +from hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped +from hapi.run import Run # %% Paths Parameterpath = Comp + "/data/lumped/Coello_Lumped2021-03-08_muskingum.txt" diff --git a/tests/rrm/calibration/test_rrm_calibration.py b/tests/rrm/calibration/test_rrm_calibration.py index 861203cae..a15c59ad9 100644 --- a/tests/rrm/calibration/test_rrm_calibration.py +++ b/tests/rrm/calibration/test_rrm_calibration.py @@ -3,9 +3,9 @@ import numpy as np import statista.descriptors as metrics -from Hapi.calibration import Calibration -from Hapi.routing import Routing -from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped +from hapi.calibration import Calibration +from hapi.routing import Routing +from hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped def test_read_parameters_bounds( diff --git a/tests/rrm/catchment/test_lake.py b/tests/rrm/catchment/test_lake.py index b9fb82540..f7d7c116f 100644 --- a/tests/rrm/catchment/test_lake.py +++ b/tests/rrm/catchment/test_lake.py @@ -2,8 +2,8 @@ import numpy as np -from Hapi.catchment import Lake -from Hapi.rrm.hbv_lake import HBVLake +from hapi.catchment import Lake +from hapi.rrm.hbv_lake import HBVLake def test_lake(): diff --git a/tests/rrm/catchment/test_rrm_catchment.py b/tests/rrm/catchment/test_rrm_catchment.py index 48151969f..12ef64002 100644 --- a/tests/rrm/catchment/test_rrm_catchment.py +++ b/tests/rrm/catchment/test_rrm_catchment.py @@ -6,10 +6,10 @@ from pandas.core.frame import DataFrame from pandas.core.indexes.datetimes import DatetimeIndex -from Hapi.catchment import Catchment -from Hapi.routing import Routing -from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped -from Hapi.run import Run +from hapi.catchment import Catchment +from hapi.routing import Routing +from hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped +from hapi.run import Run def test_create_catchment_instance(coello_rrm_date: list): diff --git a/tests/rrm/conceptual/test_conceptual_models.py b/tests/rrm/conceptual/test_conceptual_models.py index 2f1603995..f204363d3 100644 --- a/tests/rrm/conceptual/test_conceptual_models.py +++ b/tests/rrm/conceptual/test_conceptual_models.py @@ -2,9 +2,9 @@ import pandas as pd import pytest -from Hapi.rrm.hbv import HBV -from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 -from Hapi.rrm.hbv_lake import HBVLake +from hapi.rrm.hbv import HBV +from hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 +from hapi.rrm.hbv_lake import HBVLake @pytest.fixture() diff --git a/tests/rrm/conftest.py b/tests/rrm/conftest.py index cb67b2e19..5c79f0f40 100644 --- a/tests/rrm/conftest.py +++ b/tests/rrm/conftest.py @@ -7,7 +7,7 @@ from geopandas import GeoDataFrame from osgeo import gdal -from Hapi.parameters.parameters import Parameter +from hapi.parameters.parameters import Parameter from tests.rrm.calibration.conftest import * from tests.rrm.catchment.conftest import * diff --git a/tests/rrm/parameters/test_parameters.py b/tests/rrm/parameters/test_parameters.py index dfa6bf923..1a43ddbac 100644 --- a/tests/rrm/parameters/test_parameters.py +++ b/tests/rrm/parameters/test_parameters.py @@ -5,7 +5,7 @@ import pytest -from Hapi.parameters.parameters import ( +from hapi.parameters.parameters import ( FigshareAPIClient, FileManager, Parameter, @@ -104,7 +104,7 @@ def test_download_file(self, temp_directory): mock_response.iter_content.return_value = [b"fake content"] mock_response.raise_for_status = MagicMock() - with patch("Hapi.parameters.parameters.requests.get", return_value=mock_response): + with patch("hapi.parameters.parameters.requests.get", return_value=mock_response): FileManager.download_file(url, file_path) assert new_dir.exists(), "The directory should be created." @@ -182,7 +182,7 @@ def test_download_files(self, parameter_manager, mock_api_client, tmp_path): } with patch( - "Hapi.parameters.parameters.FileManager.download_file" + "hapi.parameters.parameters.FileManager.download_file" ) as mock_download: parameter_manager.download_files(set_id=1, download_dir=tmp_path) @@ -322,7 +322,7 @@ def test_integration_get_parameters(self): int_test_dir = parameter.download_dir # mock to download only one parameter set with patch( - "Hapi.parameters.parameters.ParameterManager.PARAMETER_SET_ID", new=[1] + "hapi.parameters.parameters.ParameterManager.PARAMETER_SET_ID", new=[1] ): parameter.get_parameters() diff --git a/tests/rrm/parameters/test_parameters_cli.py b/tests/rrm/parameters/test_parameters_cli.py index ad05d827c..981b110a7 100644 --- a/tests/rrm/parameters/test_parameters_cli.py +++ b/tests/rrm/parameters/test_parameters_cli.py @@ -3,13 +3,13 @@ import pytest -from Hapi.parameters.parameters import main +from hapi.parameters.parameters import main @pytest.fixture def mock_parameter_class(): """Mock the Parameter class methods.""" - with patch("Hapi.parameters.parameters.Parameter") as MockParameter: + with patch("hapi.parameters.parameters.Parameter") as MockParameter: MockParameter.return_value = MagicMock() MockParameter.get_parameters.return_value = MagicMock() MockParameter.get_parameter_set.return_value = MagicMock() @@ -65,7 +65,7 @@ def test_list_parameter_names(mock_parameter_class): """Test the list-parameter-names command.""" with patch("sys.argv", ["parameters.py", "list-parameter-names"]), patch( - "Hapi.parameters.parameters.Parameter.list_parameter_names", + "hapi.parameters.parameters.Parameter.list_parameter_names", return_value=["01_tt", "02_rfcf", "03_sfcf"], ) as mock_list_names: main() diff --git a/tests/rrm/test_dist_parameters.py b/tests/rrm/test_dist_parameters.py index aee7f7ba4..4968d30b8 100644 --- a/tests/rrm/test_dist_parameters.py +++ b/tests/rrm/test_dist_parameters.py @@ -1,7 +1,7 @@ import numpy as np from osgeo import gdal -from Hapi.rrm.parameters import Parameters as DP +from hapi.rrm.parameters import Parameters as DP def test_create_distparameters_instance( diff --git a/tests/rrm/test_rrm_inputs.py b/tests/rrm/test_rrm_inputs.py index f4f3e0917..073ff5b19 100644 --- a/tests/rrm/test_rrm_inputs.py +++ b/tests/rrm/test_rrm_inputs.py @@ -4,7 +4,7 @@ from geopandas import GeoDataFrame from pyramids.multidataset import MultiDataset as Datacube -from Hapi.inputs import Inputs +from hapi.inputs import Inputs def test_prepare_inputs( diff --git a/tests/run/distributed_mode_run.py b/tests/run/distributed_mode_run.py index bc03bf78a..41624bed7 100644 --- a/tests/run/distributed_mode_run.py +++ b/tests/run/distributed_mode_run.py @@ -4,9 +4,9 @@ """ Comp = "F:/01Algorithms/Hydrology/HAPI/examples" -import Hapi.rrm.hbv_bergestrom92 as HBV -from Hapi.catchment import Catchment -from Hapi.run import Run +import hapi.rrm.hbv_bergestrom92 as HBV +from hapi.catchment import Catchment +from hapi.run import Run # %% Paths Path = Comp + "/data/distributed/coello" diff --git a/tests/run/lumped_run.py b/tests/run/lumped_run.py index bd7b237bb..2ef944b87 100644 --- a/tests/run/lumped_run.py +++ b/tests/run/lumped_run.py @@ -2,10 +2,10 @@ import statista.descriptors as metrics -from Hapi.catchment import Catchment -from Hapi.routing import Routing -from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as hbv_lumped -from Hapi.run import Run +from hapi.catchment import Catchment +from hapi.routing import Routing +from hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as hbv_lumped +from hapi.run import Run # %% Paths Comp = "examples" diff --git a/tests/sensitivity_analysis.py b/tests/sensitivity_analysis.py index 929dd9ecd..15a107034 100644 --- a/tests/sensitivity_analysis.py +++ b/tests/sensitivity_analysis.py @@ -2,10 +2,10 @@ import statista.descriptors as metrics from statista.sensitivity import Sensitivity as SA -from Hapi.catchment import Catchment -from Hapi.routing import Routing -from Hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped -from Hapi.run import Run +from hapi.catchment import Catchment +from hapi.routing import Routing +from hapi.rrm.hbv_bergestrom92 import HBVBergestrom92 as HBVLumped +from hapi.run import Run # %% Paths Parameterpath = "examples/data/lumped/Coello_Lumped2021-03-08_muskingum.txt" diff --git a/tests/test_dem.py b/tests/test_dem.py index 7f54ddf90..6198c8109 100644 --- a/tests/test_dem.py +++ b/tests/test_dem.py @@ -1,7 +1,7 @@ import numpy as np from osgeo import gdal -from Hapi.dem import DEM +from hapi.dem import DEM def test_flow_direction_index(coello_df_4000: gdal.Dataset): From 77640d2079662486cd06edc26103dc3c5e1d9747 Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Mon, 30 Mar 2026 22:29:46 +0200 Subject: [PATCH 09/19] use snake_case names for Routing class methods --- docs/examples/lumped-model-calibration.md | 2 +- docs/examples/lumped-model-run.md | 4 +- .../Note books/Lumped-Model_Run.ipynb | 840 ++++++++-------- .../Note books/Lumped_Model_Calib.ipynb | 927 +++++++++--------- .../coello-lumped-model-run-muskingum.ipynb | 912 +++++++++-------- .../Note books/lumped-model-run-coello.ipynb | 854 ++++++++-------- ...libration-deap-multiobjective-NSE-NSEHF.py | 2 +- ...alibration-deap-multiobjective-NSE-RMSE.py | 2 +- .../coello-lumped-model-calibration-deap.py | 2 +- .../coello-lumped-model-calibration.py | 2 +- .../run/coello-lumped-model-run-maxbas.py | 4 +- .../coello/run/coello-lumped-model-run.py | 4 +- src/hapi/routing.py | 46 +- src/hapi/rrm/distrrm.py | 12 +- src/hapi/wrapper.py | 6 +- tests/calibration/lumped_calibration.py | 2 +- tests/rrm/calibration/test_rrm_calibration.py | 2 +- tests/rrm/catchment/conftest.py | 2 +- tests/rrm/catchment/test_rrm_catchment.py | 6 +- tests/run/lumped_run.py | 4 +- tests/sensitivity_analysis.py | 4 +- tests/test_dem.py | 7 +- 22 files changed, 1809 insertions(+), 1837 deletions(-) diff --git a/docs/examples/lumped-model-calibration.md b/docs/examples/lumped-model-calibration.md index 04bc76b63..ab871238d 100644 --- a/docs/examples/lumped-model-calibration.md +++ b/docs/examples/lumped-model-calibration.md @@ -46,7 +46,7 @@ To calibrate the HBV lumped model inside Hapi you need to follow the same steps parameters = [] # Routing Route = 1 - RoutingFn = Routing.TriangularRouting1 + RoutingFn = Routing.triangular_routing_1 Basic_inputs = dict(Route=Route, RoutingFn=RoutingFn, InitialValues = parameters) diff --git a/docs/examples/lumped-model-run.md b/docs/examples/lumped-model-run.md index 7695f0498..b26e15c22 100644 --- a/docs/examples/lumped-model-run.md +++ b/docs/examples/lumped-model-run.md @@ -53,8 +53,8 @@ Coello.readParameters(Parameterpath, Snow) - Prepare the routing options. ```python -# RoutingFn = Routing.TriangularRouting2 -RoutingFn = Routing.Muskingum_V +# RoutingFn = Routing.triangular_routing_2 +RoutingFn = Routing.muskingum_v Route = 1 ``` - now all the data required for the model are prepared in the right form, now you can call the `runLumped` wrapper to initiate the calculation diff --git a/examples/hydrological-model/Note books/Lumped-Model_Run.ipynb b/examples/hydrological-model/Note books/Lumped-Model_Run.ipynb index 881162c26..deed027b8 100644 --- a/examples/hydrological-model/Note books/Lumped-Model_Run.ipynb +++ b/examples/hydrological-model/Note books/Lumped-Model_Run.ipynb @@ -1,428 +1,416 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "a364d52f-69a7-475b-933d-89650d591a05", - "metadata": {}, - "source": [ - "# Lumped Conceptual Model" - ] - }, - { - "cell_type": "markdown", - "id": "5ec32bfb-e0a3-47c1-9371-b9225ee110e0", - "metadata": {}, - "source": [ - "- please change the Path to the directory where you stored the case study data" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "e6b2629f", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "Comp = \"F:/01Algorithms/Hydrology/HAPI/Examples\"\n", - "os.chdir(Comp)\n", - "#os.listdir(Path)" - ] - }, - { - "cell_type": "markdown", - "id": "0c51f000", - "metadata": {}, - "source": [ - "### Import Modules" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "efd94b20", - "metadata": {}, - "outputs": [], - "source": [ - "import datetime as dt\n", - "import matplotlib.pyplot as plt\n", - "\n", - "\n", - "import Hapi.rrm.hbv_bergestrom92 as HBVLumped\n", - "from Hapi.run import Run\n", - "from Hapi.catchment import Catchment\n", - "from Hapi.rrm.routing import Routing\n", - "import Hapi.sm.performancecriteria as PC" - ] - }, - { - "cell_type": "markdown", - "id": "883d3c98", - "metadata": {}, - "source": [ - "### Paths" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "78d8611e", - "metadata": {}, - "outputs": [], - "source": [ - "Parameterpath = Comp + \"/data/lumped/Coello_Lumped2021-03-08_muskingum.txt\"\n", - "MeteoDataPath = Comp + \"/data/lumped/meteo_data-MSWEP.csv\"\n", - "Path = Comp + \"/data/lumped/\"" - ] - }, - { - "cell_type": "markdown", - "id": "85e3c2f9", - "metadata": {}, - "source": [ - "### Meteorological data" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "5812a7f5", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Lumped Model inputs are read successfully\n" - ] - } - ], - "source": [ - "start = \"2009-01-01\"\n", - "end = \"2011-12-31\"\n", - "name = \"Coello\"\n", - "Coello = Catchment(name, start, end)\n", - "Coello.readLumpedInputs(MeteoDataPath)" - ] - }, - { - "cell_type": "markdown", - "id": "eca51f8c-de23-4743-9e80-0ea3497a17b5", - "metadata": {}, - "source": [ - "### Lumped model" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "e99e1b85", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Lumped model is read successfully\n" - ] - } - ], - "source": [ - "# catchment area\n", - "AreaCoeff = 1530\n", - "# [Snow pack, Soil moisture, Upper zone, Lower Zone, Water content]\n", - "InitialCond = [0,10,10,10,0]\n", - "\n", - "Coello.readLumpedModel(HBVLumped, AreaCoeff, InitialCond)" - ] - }, - { - "cell_type": "markdown", - "id": "38e7ae6a-d43a-4fc0-9985-4dd69b5f84e1", - "metadata": {}, - "source": [ - "### Model Parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "bb1d0450-e973-44af-88af-f6f8e44c1783", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Parameters are read successfully\n" - ] - } - ], - "source": [ - "Snow = 0 # no snow subroutine\n", - "Coello.readParameters(Parameterpath, Snow)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "256545fe-9c7c-4628-b559-f43a307c5db4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0.7,\n", - " 51.1726422,\n", - " 1.147999,\n", - " 0.1,\n", - " 0.88137,\n", - " 0.82353,\n", - " 0.35651,\n", - " 0.03223,\n", - " 47.426,\n", - " 5.2744,\n", - " 1.0,\n", - " 0.2]" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Coello.Parameters" - ] - }, - { - "cell_type": "markdown", - "id": "602e4629", - "metadata": {}, - "source": [ - "### Observed flow" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "54555e66", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gauges data are read successfully\n" - ] - } - ], - "source": [ - "Coello.readDischargeGauges(Path + \"Qout_c.csv\", fmt=\"%Y-%m-%d\")" - ] - }, - { - "cell_type": "markdown", - "id": "60f825cc-49ee-4680-b8cb-901bd11774ec", - "metadata": {}, - "source": [ - "- the discharge data should be stored in the text file with the date stored in the first column and the discharge values in the second column" - ] - }, - { - "cell_type": "markdown", - "id": "894ecdc8", - "metadata": {}, - "source": [ - "### Routing" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "f80b814a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model Run has finished\n" - ] - } - ], - "source": [ - "# RoutingFn = Routing.TriangularRouting2\n", - "RoutingFn = Routing.Muskingum_V\n", - "Route = 1" - ] - }, - { - "cell_type": "markdown", - "id": "560380a3-6dd5-44a5-b9c4-8d65e53d5a5f", - "metadata": {}, - "source": [ - "### Run The Model" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "c4f9c7fc-c087-4fef-be5c-f970e1f13f68", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model Run has finished\n" - ] - } - ], - "source": [ - "Run.runLumped(Coello, Route, RoutingFn)" - ] - }, - { - "cell_type": "markdown", - "id": "3b30a30b", - "metadata": {}, - "source": [ - "### Calculate performance criteria" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "7e1a0414", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "RMSE= 26.03\n", - "NSE= 0.01\n", - "NSEhf= 0.17\n", - "KGE= 0.54\n", - "WB= 96.55\n" - ] - } - ], - "source": [ - "Metrics = dict()\n", - "\n", - "# gaugeid = Coello.QGauges.columns[-1]\n", - "Qobs = Coello.QGauges['q']\n", - "\n", - "Metrics['RMSE'] = PC.RMSE(Qobs, Coello.Qsim['q'])\n", - "Metrics['NSE'] = PC.NSE(Qobs, Coello.Qsim['q'])\n", - "Metrics['NSEhf'] = PC.NSEHF(Qobs, Coello.Qsim['q'])\n", - "Metrics['KGE'] = PC.KGE(Qobs, Coello.Qsim['q'])\n", - "Metrics['WB'] = PC.WB(Qobs, Coello.Qsim['q'])\n", - "\n", - "print(\"RMSE= \" + str(round(Metrics['RMSE'],2)))\n", - "print(\"NSE= \" + str(round(Metrics['NSE'],2)))\n", - "print(\"NSEhf= \" + str(round(Metrics['NSEhf'],2)))\n", - "print(\"KGE= \" + str(round(Metrics['KGE'],2)))\n", - "print(\"WB= \" + str(round(Metrics['WB'],2)))" - ] - }, - { - "cell_type": "markdown", - "id": "da4641e2", - "metadata": {}, - "source": [ - "### Plot Hydrograph" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "17053377", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(
,\n", - " )" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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yCOP9Nt2wQUX8PLLL7Nt2zbKy8u5//77Oe+884iOjg56zkD9VSgUrQcloCKAk046iYSEBO/fI488wiWXXMK+++5Lnz59OO6447zCpCEcddRRDBgwgGOOOYb/+7//47jjjgPgtttu47TTTuO4444jJSWFgw8+mAULFgAwbNgw3njjDS688EIyMjJIT0/XeRMGon379hxzzDGmKYauvPJKLrnkEo488kj69u1LfHw8r732WkjnDNRfhULRemj19aDWrVvHPvvs0wI9ihwyMzPp27cvdXV1REe3SauuF3U/KBQ+9rzwIUXPfuD93D//nxbph1U9KKVBKRQKhSIiUQJKoVAoFBFJ27b3tBH69OlDazHlKhSKtoPSoBQKhaKtEuHjViWgFAqFQhGRKAGlUCgUiohECSiFQqFQRCRKQCkUCoUiIlECSqFQKBQRiRJQEcDUqVM56KCDSEpKonPnzhx00EG8+eabyjVcoVC0aZSAamFefPFFbrvtNv73v/+xe/ducnNzefvtt5k7dy61tbUt3T2FQqFoMZSAakFKSkqYOHEib775JmeffTYpKSkIIdhvv/34/PPPiYuL46effmK//fYjNTWVnj178sgjj3j3N5aBB1dQrqdSblVVFZdddhnp6enss88+PPfcc7r22dnZnHXWWXTq1Im+ffv6VeBVKBSKlqTNZZLY0umIZjtXsMSL//33HzU1NZx++umWbZKSkvjkk08YNmwYq1ev5thjj2XUqFF+FWrNePTRR8nMzGTr1q1UVFRw0kknebc5nU5OPfVUTj/9dKZMmUJWVhbjx49n8ODBHH/88SF/R4VCoWgqlAbVghQUFNCxY0ddhvFDDz2UtLQ0EhISmDNnDmPHjmXEiBHYbDZGjhzJBRdcwN9//x3S8adNm8b999/vLVdx6623erctWrSI/Px8Jk6cSGxsLP369eOaa65h6tSpjf49FQqFoj60OQ0qkujQoQMFBQXY7XavkJo3bx4APXr0wOl0smDBAu69915Wr15NbW0tNTU1nHPOOSEd31g6Xbu8fft2srOzSUtL865zOBwccUTzaZgKhaKFiXBHrDYnoFqq3okZhxxyCHFxcfzwww+cddZZpm0uvPBCbr75Zn755Rfi4+O5/fbbKSgoAPzLwjscDvLz872fMzIyyMrKYujQoYCr5LuHnj170rdvXzZt2tQUX02h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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "gaugei = 0\n", - "plotstart = \"2009-01-01\"\n", - "plotend = \"2011-12-31\"\n", - "Coello.plotHydrograph(plotstart, plotend, gaugei, Title= \"Lumped Model\")" - ] - }, - { - "cell_type": "markdown", - "id": "6193fb9c", - "metadata": {}, - "source": [ - "### Save Results" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "88e8fae6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Data is saved successfully\n" - ] - } - ], - "source": [ - "StartDate = \"2009-01-01\"\n", - "EndDate = \"2010-04-20\"\n", - "\n", - "Path = SaveTo + \"Results-Lumped-Model\" + str(dt.datetime.now())[0:10] + \".txt\"\n", - "Coello.saveResults(Result=5, StartDate=StartDate, EndDate=EndDate, Path=Path)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "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.8.10" - } + "cells": [ + { + "cell_type": "markdown", + "id": "a364d52f-69a7-475b-933d-89650d591a05", + "metadata": {}, + "source": [ + "# Lumped Conceptual Model" + ] + }, + { + "cell_type": "markdown", + "id": "5ec32bfb-e0a3-47c1-9371-b9225ee110e0", + "metadata": {}, + "source": [ + "- please change the Path to the directory where you stored the case study data" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "e6b2629f", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "Comp = \"F:/01Algorithms/Hydrology/HAPI/Examples\"\n", + "os.chdir(Comp)\n", + "#os.listdir(Path)" + ] + }, + { + "cell_type": "markdown", + "id": "0c51f000", + "metadata": {}, + "source": [ + "### Import Modules" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "efd94b20", + "metadata": {}, + "outputs": [], + "source": [ + "import datetime as dt\n", + "import matplotlib.pyplot as plt\n", + "\n", + "\n", + "import Hapi.rrm.hbv_bergestrom92 as HBVLumped\n", + "from Hapi.run import Run\n", + "from Hapi.catchment import Catchment\n", + "from Hapi.rrm.routing import Routing\n", + "import Hapi.sm.performancecriteria as PC" + ] + }, + { + "cell_type": "markdown", + "id": "883d3c98", + "metadata": {}, + "source": [ + "### Paths" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "78d8611e", + "metadata": {}, + "outputs": [], + "source": [ + "Parameterpath = Comp + \"/data/lumped/Coello_Lumped2021-03-08_muskingum.txt\"\n", + "MeteoDataPath = Comp + \"/data/lumped/meteo_data-MSWEP.csv\"\n", + "Path = Comp + \"/data/lumped/\"" + ] + }, + { + "cell_type": "markdown", + "id": "85e3c2f9", + "metadata": {}, + "source": [ + "### Meteorological data" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "5812a7f5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Lumped Model inputs are read successfully\n" + ] + } + ], + "source": [ + "start = \"2009-01-01\"\n", + "end = \"2011-12-31\"\n", + "name = \"Coello\"\n", + "Coello = Catchment(name, start, end)\n", + "Coello.readLumpedInputs(MeteoDataPath)" + ] + }, + { + "cell_type": "markdown", + "id": "eca51f8c-de23-4743-9e80-0ea3497a17b5", + "metadata": {}, + "source": [ + "### Lumped model" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "e99e1b85", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Lumped model is read successfully\n" + ] + } + ], + "source": [ + "# catchment area\n", + "AreaCoeff = 1530\n", + "# [Snow pack, Soil moisture, Upper zone, Lower Zone, Water content]\n", + "InitialCond = [0,10,10,10,0]\n", + "\n", + "Coello.readLumpedModel(HBVLumped, AreaCoeff, InitialCond)" + ] + }, + { + "cell_type": "markdown", + "id": "38e7ae6a-d43a-4fc0-9985-4dd69b5f84e1", + "metadata": {}, + "source": [ + "### Model Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "bb1d0450-e973-44af-88af-f6f8e44c1783", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Parameters are read successfully\n" + ] + } + ], + "source": [ + "Snow = 0 # no snow subroutine\n", + "Coello.readParameters(Parameterpath, Snow)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "256545fe-9c7c-4628-b559-f43a307c5db4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.7,\n", + " 51.1726422,\n", + " 1.147999,\n", + " 0.1,\n", + " 0.88137,\n", + " 0.82353,\n", + " 0.35651,\n", + " 0.03223,\n", + " 47.426,\n", + " 5.2744,\n", + " 1.0,\n", + " 0.2]" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Coello.Parameters" + ] + }, + { + "cell_type": "markdown", + "id": "602e4629", + "metadata": {}, + "source": [ + "### Observed flow" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "54555e66", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gauges data are read successfully\n" + ] + } + ], + "source": [ + "Coello.readDischargeGauges(Path + \"Qout_c.csv\", fmt=\"%Y-%m-%d\")" + ] + }, + { + "cell_type": "markdown", + "id": "60f825cc-49ee-4680-b8cb-901bd11774ec", + "metadata": {}, + "source": [ + "- the discharge data should be stored in the text file with the date stored in the first column and the discharge values in the second column" + ] + }, + { + "cell_type": "markdown", + "id": "894ecdc8", + "metadata": {}, + "source": [ + "### Routing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f80b814a", + "metadata": {}, + "outputs": [], + "source": "# RoutingFn = Routing.triangular_routing_2\nRoutingFn = Routing.muskingum_v\nRoute = 1" + }, + { + "cell_type": "markdown", + "id": "560380a3-6dd5-44a5-b9c4-8d65e53d5a5f", + "metadata": {}, + "source": [ + "### Run The Model" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "c4f9c7fc-c087-4fef-be5c-f970e1f13f68", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model Run has finished\n" + ] + } + ], + "source": [ + "Run.runLumped(Coello, Route, RoutingFn)" + ] + }, + { + "cell_type": "markdown", + "id": "3b30a30b", + "metadata": {}, + "source": [ + "### Calculate performance criteria" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "7e1a0414", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE= 26.03\n", + "NSE= 0.01\n", + "NSEhf= 0.17\n", + "KGE= 0.54\n", + "WB= 96.55\n" + ] + } + ], + "source": [ + "Metrics = dict()\n", + "\n", + "# gaugeid = Coello.QGauges.columns[-1]\n", + "Qobs = Coello.QGauges['q']\n", + "\n", + "Metrics['RMSE'] = PC.RMSE(Qobs, Coello.Qsim['q'])\n", + "Metrics['NSE'] = PC.NSE(Qobs, Coello.Qsim['q'])\n", + "Metrics['NSEhf'] = PC.NSEHF(Qobs, Coello.Qsim['q'])\n", + "Metrics['KGE'] = PC.KGE(Qobs, Coello.Qsim['q'])\n", + "Metrics['WB'] = PC.WB(Qobs, Coello.Qsim['q'])\n", + "\n", + "print(\"RMSE= \" + str(round(Metrics['RMSE'],2)))\n", + "print(\"NSE= \" + str(round(Metrics['NSE'],2)))\n", + "print(\"NSEhf= \" + str(round(Metrics['NSEhf'],2)))\n", + "print(\"KGE= \" + str(round(Metrics['KGE'],2)))\n", + "print(\"WB= \" + str(round(Metrics['WB'],2)))" + ] + }, + { + "cell_type": "markdown", + "id": "da4641e2", + "metadata": {}, + "source": [ + "### Plot Hydrograph" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "17053377", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(
,\n", + " )" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" }, - "nbformat": 4, - "nbformat_minor": 5 -} + { + "data": { + "image/png": "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yCOP9Nt2wQUX8PLLL7Nt2zbKy8u5//77Oe+884iOjg56zkD9VSgUrQcloCKAk046iYSEBO/fI488wiWXXMK+++5Lnz59OO6447zCpCEcddRRDBgwgGOOOYb/+7//47jjjgPgtttu47TTTuO4444jJSWFgw8+mAULFgAwbNgw3njjDS688EIyMjJIT0/XeRMGon379hxzzDGmKYauvPJKLrnkEo488kj69u1LfHw8r732WkjnDNRfhULRemj19aDWrVvHPvvs0wI9ihwyMzPp27cvdXV1REe3SauuF3U/KBQ+9rzwIUXPfuD93D//nxbph1U9KKVBKRQKhSIiUQJKoVAoFBFJ27b3tBH69OlDazHlKhSKtoPSoBQKhaKtEuHjViWgFAqFQhGRKAGlUCgUiohECSiFQqFQRCRKQCkUCoUiIlECSqFQKBQRiRJQEcDUqVM56KCDSEpKonPnzhx00EG8+eabyjVcoVC0aZSAamFefPFFbrvtNv73v/+xe/ducnNzefvtt5k7dy61tbUt3T2FQqFoMZSAakFKSkqYOHEib775JmeffTYpKSkIIdhvv/34/PPPiYuL46effmK//fYjNTWVnj178sgjj3j3N5aBB1dQrqdSblVVFZdddhnp6enss88+PPfcc7r22dnZnHXWWXTq1Im+ffv6VeBVKBSKlqTNZZLY0umIZjtXsMSL//33HzU1NZx++umWbZKSkvjkk08YNmwYq1ev5thjj2XUqFF+FWrNePTRR8nMzGTr1q1UVFRw0kknebc5nU5OPfVUTj/9dKZMmUJWVhbjx49n8ODBHH/88SF/R4VCoWgqlAbVghQUFNCxY0ddhvFDDz2UtLQ0EhISmDNnDmPHjmXEiBHYbDZGjhzJBRdcwN9//x3S8adNm8b999/vLVdx6623erctWrSI/Px8Jk6cSGxsLP369eOaa65h6tSpjf49FQqFoj60OQ0qkujQoQMFBQXY7XavkJo3bx4APXr0wOl0smDBAu69915Wr15NbW0tNTU1nHPOOSEd31g6Xbu8fft2srOzSUtL865zOBwccUTzaZgKhaKFiXBHrDYnoFqq3okZhxxyCHFxcfzwww+cddZZpm0uvPBCbr75Zn755Rfi4+O5/fbbKSgoAPzLwjscDvLz872fMzIyyMrKYujQoYCr5LuHnj170rdvXzZt2tQUX02h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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "gaugei = 0\n", + "plotstart = \"2009-01-01\"\n", + "plotend = \"2011-12-31\"\n", + "Coello.plotHydrograph(plotstart, plotend, gaugei, Title= \"Lumped Model\")" + ] + }, + { + "cell_type": "markdown", + "id": "6193fb9c", + "metadata": {}, + "source": [ + "### Save Results" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "88e8fae6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data is saved successfully\n" + ] + } + ], + "source": [ + "StartDate = \"2009-01-01\"\n", + "EndDate = \"2010-04-20\"\n", + "\n", + "Path = SaveTo + \"Results-Lumped-Model\" + str(dt.datetime.now())[0:10] + \".txt\"\n", + "Coello.saveResults(Result=5, StartDate=StartDate, EndDate=EndDate, Path=Path)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/examples/hydrological-model/Note books/Lumped_Model_Calib.ipynb b/examples/hydrological-model/Note books/Lumped_Model_Calib.ipynb index 87847b1c8..863de85e6 100644 --- a/examples/hydrological-model/Note books/Lumped_Model_Calib.ipynb +++ b/examples/hydrological-model/Note books/Lumped_Model_Calib.ipynb @@ -1,468 +1,461 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "b28a9387-0f0c-4c9d-a52d-b3a3a5618aac", - "metadata": {}, - "source": [ - "# Lumped Model Calibration" - ] - }, - { - "cell_type": "markdown", - "id": "7b408ce7-52aa-401b-bcd5-132255e46cf3", - "metadata": {}, - "source": [ - "- Please change the Path in the following cell to the directory where you stored the case study data" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "ad01687e", - "metadata": {}, - "outputs": [], - "source": [ - "Comp = \"F:/01Algorithms/Hydrology/HAPI/Examples\"" - ] - }, - { - "cell_type": "markdown", - "id": "2bd5322a", - "metadata": {}, - "source": [ - "### Modules" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "54aa43b6", - "metadata": {}, - "outputs": [], - "source": [ - "import datetime as dt\n", - "\n", - "import pandas as pd\n", - "\n", - "import Hapi.rrm.hbv_bergestrom92 as HBVLumped\n", - "import Hapi.sm.performancecriteria as PC\n", - "from Hapi.calibration import Calibration\n", - "from Hapi.rrm.routing import Routing\n", - "from Hapi.run import Run" - ] - }, - { - "cell_type": "markdown", - "id": "1584f9c5", - "metadata": {}, - "source": [ - "### Paths" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "576dd8b4", - "metadata": {}, - "outputs": [], - "source": [ - "Parameterpath = \"Examples/data/lumped/Coello_Lumped2021-03-08_muskingum.txt\"\n", - "MeteoDataPath = \"Examples/data/lumped/meteo_data-MSWEP.csv\"\n", - "Path = \"Examples/data/lumped/\"" - ] - }, - { - "cell_type": "markdown", - "id": "d3bffd6f", - "metadata": {}, - "source": [ - "### Meteorological data" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "a89ee25b", - "metadata": {}, - "outputs": [ - { - "ename": "FileNotFoundError", - "evalue": "[Errno 2] No such file or directory: 'Examples/data/lumped/meteo_data-MSWEP.csv'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", - "Input \u001b[1;32mIn [3]\u001b[0m, in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 3\u001b[0m name \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCoello\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 5\u001b[0m Coello \u001b[38;5;241m=\u001b[39m Calibration(name, start, end)\n\u001b[1;32m----> 6\u001b[0m \u001b[43mCoello\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mReadLumpedInputs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mMeteoDataPath\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mC:\\MyComputer\\01Algorithms\\hydrology\\Hapi\\Hapi\\catchment.py:622\u001b[0m, in \u001b[0;36mCatchment.readLumpedInputs\u001b[1;34m(self, Path, ll_temp)\u001b[0m\n\u001b[0;32m 596\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mReadLumpedInputs\u001b[39m(\n\u001b[0;32m 597\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 598\u001b[0m Path: \u001b[38;5;28mstr\u001b[39m,\n\u001b[0;32m 599\u001b[0m ll_temp: Union[\u001b[38;5;28mlist\u001b[39m, np\u001b[38;5;241m.\u001b[39mndarray]\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 600\u001b[0m ):\n\u001b[0;32m 601\u001b[0m \u001b[38;5;124;03m\"\"\"readLumpedInputs.\u001b[39;00m\n\u001b[0;32m 602\u001b[0m \n\u001b[0;32m 603\u001b[0m \u001b[38;5;124;03m readLumpedInputs method read the meteorological data of lumped mode\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 620\u001b[0m \u001b[38;5;124;03m average long term temperature.\u001b[39;00m\n\u001b[0;32m 621\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 622\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata \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\n\u001b[0;32m 623\u001b[0m \u001b[43m \u001b[49m\u001b[43mPath\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mheader\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdelimiter\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[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mindex_col\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# \"\\t\", #skiprows=11,\u001b[39;49;00m\n\u001b[0;32m 624\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 625\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata\u001b[38;5;241m.\u001b[39mvalues\n\u001b[0;32m 627\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ll_temp \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", - "File \u001b[1;32m~\\anaconda\\envs\\py310\\lib\\site-packages\\pandas\\util\\_decorators.py:311\u001b[0m, in \u001b[0;36mdeprecate_nonkeyword_arguments..decorate..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 305\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) \u001b[38;5;241m>\u001b[39m num_allow_args:\n\u001b[0;32m 306\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(\n\u001b[0;32m 307\u001b[0m msg\u001b[38;5;241m.\u001b[39mformat(arguments\u001b[38;5;241m=\u001b[39marguments),\n\u001b[0;32m 308\u001b[0m \u001b[38;5;167;01mFutureWarning\u001b[39;00m,\n\u001b[0;32m 309\u001b[0m stacklevel\u001b[38;5;241m=\u001b[39mstacklevel,\n\u001b[0;32m 310\u001b[0m )\n\u001b[1;32m--> 311\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", - "File \u001b[1;32m~\\anaconda\\envs\\py310\\lib\\site-packages\\pandas\\io\\parsers\\readers.py:680\u001b[0m, in \u001b[0;36mread_csv\u001b[1;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, 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, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, error_bad_lines, warn_bad_lines, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options)\u001b[0m\n\u001b[0;32m 665\u001b[0m kwds_defaults \u001b[38;5;241m=\u001b[39m _refine_defaults_read(\n\u001b[0;32m 666\u001b[0m dialect,\n\u001b[0;32m 667\u001b[0m delimiter,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 676\u001b[0m defaults\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdelimiter\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m,\u001b[39m\u001b[38;5;124m\"\u001b[39m},\n\u001b[0;32m 677\u001b[0m )\n\u001b[0;32m 678\u001b[0m kwds\u001b[38;5;241m.\u001b[39mupdate(kwds_defaults)\n\u001b[1;32m--> 680\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[1;32m~\\anaconda\\envs\\py310\\lib\\site-packages\\pandas\\io\\parsers\\readers.py:575\u001b[0m, in \u001b[0;36m_read\u001b[1;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[0;32m 572\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[0;32m 574\u001b[0m \u001b[38;5;66;03m# Create the parser.\u001b[39;00m\n\u001b[1;32m--> 575\u001b[0m parser \u001b[38;5;241m=\u001b[39m TextFileReader(filepath_or_buffer, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwds)\n\u001b[0;32m 577\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m chunksize \u001b[38;5;129;01mor\u001b[39;00m iterator:\n\u001b[0;32m 578\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m parser\n", - "File \u001b[1;32m~\\anaconda\\envs\\py310\\lib\\site-packages\\pandas\\io\\parsers\\readers.py:933\u001b[0m, in \u001b[0;36mTextFileReader.__init__\u001b[1;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[0;32m 930\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[0;32m 932\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[1;32m--> 933\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[1;32m~\\anaconda\\envs\\py310\\lib\\site-packages\\pandas\\io\\parsers\\readers.py:1217\u001b[0m, in \u001b[0;36mTextFileReader._make_engine\u001b[1;34m(self, f, engine)\u001b[0m\n\u001b[0;32m 1213\u001b[0m mode \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrb\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1214\u001b[0m \u001b[38;5;66;03m# error: No overload variant of \"get_handle\" matches argument types\u001b[39;00m\n\u001b[0;32m 1215\u001b[0m \u001b[38;5;66;03m# \"Union[str, PathLike[str], ReadCsvBuffer[bytes], ReadCsvBuffer[str]]\"\u001b[39;00m\n\u001b[0;32m 1216\u001b[0m \u001b[38;5;66;03m# , \"str\", \"bool\", \"Any\", \"Any\", \"Any\", \"Any\", \"Any\"\u001b[39;00m\n\u001b[1;32m-> 1217\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\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[call-overload]\u001b[39;49;00m\n\u001b[0;32m 1218\u001b[0m \u001b[43m \u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1219\u001b[0m \u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1220\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[0;32m 1221\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[0;32m 1222\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[0;32m 1223\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[0;32m 1224\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[0;32m 1225\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[0;32m 1226\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1227\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[0;32m 1228\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[1;32m~\\anaconda\\envs\\py310\\lib\\site-packages\\pandas\\io\\common.py:789\u001b[0m, in \u001b[0;36mget_handle\u001b[1;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[0m\n\u001b[0;32m 784\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[0;32m 785\u001b[0m \u001b[38;5;66;03m# Check whether the filename is to be opened in binary mode.\u001b[39;00m\n\u001b[0;32m 786\u001b[0m \u001b[38;5;66;03m# Binary mode does not support 'encoding' and 'newline'.\u001b[39;00m\n\u001b[0;32m 787\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[0;32m 788\u001b[0m \u001b[38;5;66;03m# Encoding\u001b[39;00m\n\u001b[1;32m--> 789\u001b[0m handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[0;32m 790\u001b[0m \u001b[43m \u001b[49m\u001b[43mhandle\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 791\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[0;32m 792\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[0;32m 793\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[0;32m 794\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[0;32m 795\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 796\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 797\u001b[0m \u001b[38;5;66;03m# Binary mode\u001b[39;00m\n\u001b[0;32m 798\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[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'Examples/data/lumped/meteo_data-MSWEP.csv'" - ] - } - ], - "source": [ - "start = \"2009-01-01\"\n", - "end = \"2011-12-31\"\n", - "name = \"Coello\"\n", - "\n", - "Coello = Calibration(name, start, end)\n", - "Coello.readLumpedInputs(MeteoDataPath)" - ] - }, - { - "cell_type": "markdown", - "id": "eccbe8ee", - "metadata": {}, - "source": [ - "### Basic_inputs" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "f29da93b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Lumped model is read successfully\n" - ] - } - ], - "source": [ - "# catchment area\n", - "AreaCoeff = 1530\n", - "# temporal resolution\n", - "# [Snow pack, Soil moisture, Upper zone, Lower Zone, Water content]\n", - "InitialCond = [0, 10, 10, 10, 0]\n", - "# no snow subroutine\n", - "Snow = 0\n", - "Coello.readLumpedModel(HBVLumped, AreaCoeff, InitialCond)" - ] - }, - { - "cell_type": "markdown", - "id": "623019fd", - "metadata": {}, - "source": [ - "# Calibration parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "7db2ce2d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Parameters bounds are read successfully\n", - "Gauges data are read successfully\n", - "Objective function is read successfully\n" - ] - } - ], - "source": [ - "# Calibration boundaries\n", - "UB = pd.read_csv(Path + \"/lumped/UB-3.txt\", index_col=0, header=None)\n", - "parnames = UB.index\n", - "UB = UB[1].tolist()\n", - "LB = pd.read_csv(Path + \"/lumped/LB-3.txt\", index_col=0, header=None)\n", - "LB = LB[1].tolist()\n", - "\n", - "Maxbas = True\n", - "Coello.readParametersBounds(UB, LB, Snow, Maxbas=Maxbas)" - ] - }, - { - "cell_type": "markdown", - "id": "718fd2f2-baa3-409b-ab63-dee645f70398", - "metadata": {}, - "source": [ - "### Additional arguments" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "50364d63-f5d0-421b-afef-f901f54ade93", - "metadata": {}, - "outputs": [], - "source": [ - "parameters = []\n", - "# Routing\n", - "Route = 1\n", - "RoutingFn = Routing.TriangularRouting1\n", - "\n", - "Basic_inputs = dict(Route=Route, RoutingFn=RoutingFn, InitialValues=parameters)" - ] - }, - { - "cell_type": "markdown", - "id": "ebf575cc-b095-4adc-94f5-649672244853", - "metadata": {}, - "source": [ - "### Objective function" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "4705d8b5-127f-4756-9163-1eec1d2678d9", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gauges data are read successfully\n", - "Objective function is read successfully\n" - ] - } - ], - "source": [ - "# outlet discharge\n", - "Coello.readDischargeGauges(Path + \"Qout_c.csv\", fmt=\"%Y-%m-%d\")\n", - "\n", - "OF_args = []\n", - "objective_function = PC.RMSE\n", - "\n", - "Coello.read_objective_function(PC.RMSE, OF_args)" - ] - }, - { - "cell_type": "markdown", - "id": "baebdf63", - "metadata": {}, - "source": [ - "# Calibration" - ] - }, - { - "cell_type": "markdown", - "id": "a4e2b6e5", - "metadata": {}, - "source": [ - "API options\n", - "Create the options dictionary all the optimization parameters should be passed\n", - "to the optimization object inside the option dictionary:\n", - "\n", - "\n", - "to see all options import Optimizer class and check the documentation of the\n", - "method setOption" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "42e7aaea", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "hms 100\n", - "hmcr 0.95\n", - "par 0.65\n", - "dbw 2000\n", - "fileout 1\n", - "xinit 0\n", - "filename F:/01Algorithms/Hydrology/HAPI/Examples/data/lumped//Lumped_History2021-05-15.txt\n" - ] - } - ], - "source": [ - "ApiObjArgs = dict(hms=100, hmcr=0.95, par=0.65, dbw=2000, fileout=1, xinit=0,\n", - " filename=Path + \"/Lumped_History\" + str(dt.datetime.now())[0:10] + \".txt\")\n", - "\n", - "for i in range(len(ApiObjArgs)):\n", - " print(list(ApiObjArgs.keys())[i], str(ApiObjArgs[list(ApiObjArgs.keys())[i]]))\n", - "\n", - "# pll_type = 'POA'\n", - "pll_type = None\n", - "\n", - "ApiSolveArgs = dict(store_sol=True, display_opts=True, store_hst=True, hot_start=False)\n", - "\n", - "OptimizationArgs = [ApiObjArgs, pll_type, ApiSolveArgs]" - ] - }, - { - "cell_type": "markdown", - "id": "78e02f69", - "metadata": {}, - "source": [ - "### Run Calibration" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8712eeda-097d-46cb-821d-5e53918c15ce", - "metadata": {}, - "outputs": [], - "source": [ - "cal_parameters = Coello.lumpedCalibration(Basic_inputs, OptimizationArgs, printError=None)\n", - "\n", - "print(\"Objective Function = \" + str(round(cal_parameters[0], 2)))\n", - "print(\"Parameters are \" + str(cal_parameters[1]))\n", - "print(\"Time = \" + str(round(cal_parameters[2]['time'] / 60, 2)) + \" min\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8cb40098-5ace-40c8-8782-721570f7cbb0", - "metadata": {}, - "outputs": [], - "source": [ - "cal_parameters[2]['time']" - ] - }, - { - "cell_type": "markdown", - "id": "deddd63a", - "metadata": {}, - "source": [ - "### Run the Model" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5674017b", - "metadata": {}, - "outputs": [], - "source": [ - "Coello.Parameters = cal_parameters[1]\n", - "Run.runLumped(Coello, Route, RoutingFn)" - ] - }, - { - "cell_type": "markdown", - "id": "a22f97e8", - "metadata": {}, - "source": [ - "### Calculate Performance Criteria" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f372b9a6", - "metadata": {}, - "outputs": [], - "source": [ - "Metrics = dict()\n", - "\n", - "Qobs = Coello.QGauges[Coello.QGauges.columns[0]]\n", - "\n", - "Metrics['RMSE'] = PC.RMSE(Qobs, Coello.Qsim['q'])\n", - "Metrics['NSE'] = PC.NSE(Qobs, Coello.Qsim['q'])\n", - "Metrics['NSEhf'] = PC.NSEHF(Qobs, Coello.Qsim['q'])\n", - "Metrics['KGE'] = PC.KGE(Qobs, Coello.Qsim['q'])\n", - "Metrics['WB'] = PC.WB(Qobs, Coello.Qsim['q'])\n", - "\n", - "print(\"RMSE= \" + str(round(Metrics['RMSE'], 2)))\n", - "print(\"NSE= \" + str(round(Metrics['NSE'], 2)))\n", - "print(\"NSEhf= \" + str(round(Metrics['NSEhf'], 2)))\n", - "print(\"KGE= \" + str(round(Metrics['KGE'], 2)))\n", - "print(\"WB= \" + str(round(Metrics['WB'], 2)))" - ] - }, - { - "cell_type": "markdown", - "id": "dd845231", - "metadata": {}, - "source": [ - "### Plotting Hydrograph" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "09268e7d", - "metadata": {}, - "outputs": [], - "source": [ - "gaugei = 0\n", - "plotstart = \"2009-01-01\"\n", - "plotend = \"2011-12-31\"\n", - "Coello.plotHydrograph(plotstart, plotend, gaugei, Title=\"Lumped Model\")" - ] - }, - { - "cell_type": "markdown", - "id": "249dc415", - "metadata": {}, - "source": [ - "### Save the Parameters" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0ec9ee5d", - "metadata": {}, - "outputs": [], - "source": [ - "ParPath = Path + \"Parameters\" + str(dt.datetime.now())[0:10] + \".txt\"\n", - "parameters = pd.DataFrame(index=parnames)\n", - "parameters['values'] = cal_parameters[1]\n", - "parameters.to_csv(ParPath, header=None, float_format=\"%0.4f\")" - ] - }, - { - "cell_type": "markdown", - "id": "30c36ce1-4cee-4c20-b368-7ffe4b69cdd7", - "metadata": {}, - "source": [ - "### Save Results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3007b8a1-627f-4e88-b036-756f7cdedb9f", - "metadata": {}, - "outputs": [], - "source": [ - "StartDate = \"2009-01-01\"\n", - "EndDate = \"2010-04-20\"\n", - "\n", - "Path = Path + \"Results-Lumped-Model\" + str(dt.datetime.now())[0:10] + \".txt\"\n", - "Coello.saveResults(Result=5, StartDate=StartDate, EndDate=EndDate, Path=Path)" - ] - } - ], - "metadata": { - "kernelspec": { - "name": "pycharm-cd49064f", - "language": "python", - "display_name": "PyCharm (Hapi)" - }, - "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.8.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} + "cells": [ + { + "cell_type": "markdown", + "id": "b28a9387-0f0c-4c9d-a52d-b3a3a5618aac", + "metadata": {}, + "source": [ + "# Lumped Model Calibration" + ] + }, + { + "cell_type": "markdown", + "id": "7b408ce7-52aa-401b-bcd5-132255e46cf3", + "metadata": {}, + "source": [ + "- Please change the Path in the following cell to the directory where you stored the case study data" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "ad01687e", + "metadata": {}, + "outputs": [], + "source": [ + "Comp = \"F:/01Algorithms/Hydrology/HAPI/Examples\"" + ] + }, + { + "cell_type": "markdown", + "id": "2bd5322a", + "metadata": {}, + "source": [ + "### Modules" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "54aa43b6", + "metadata": {}, + "outputs": [], + "source": [ + "import datetime as dt\n", + "\n", + "import pandas as pd\n", + "\n", + "import Hapi.rrm.hbv_bergestrom92 as HBVLumped\n", + "import Hapi.sm.performancecriteria as PC\n", + "from Hapi.calibration import Calibration\n", + "from Hapi.rrm.routing import Routing\n", + "from Hapi.run import Run" + ] + }, + { + "cell_type": "markdown", + "id": "1584f9c5", + "metadata": {}, + "source": [ + "### Paths" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "576dd8b4", + "metadata": {}, + "outputs": [], + "source": [ + "Parameterpath = \"Examples/data/lumped/Coello_Lumped2021-03-08_muskingum.txt\"\n", + "MeteoDataPath = \"Examples/data/lumped/meteo_data-MSWEP.csv\"\n", + "Path = \"Examples/data/lumped/\"" + ] + }, + { + "cell_type": "markdown", + "id": "d3bffd6f", + "metadata": {}, + "source": [ + "### Meteorological data" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "a89ee25b", + "metadata": {}, + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: 'Examples/data/lumped/meteo_data-MSWEP.csv'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "Input \u001b[1;32mIn [3]\u001b[0m, in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 3\u001b[0m name \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCoello\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 5\u001b[0m Coello \u001b[38;5;241m=\u001b[39m Calibration(name, start, end)\n\u001b[1;32m----> 6\u001b[0m \u001b[43mCoello\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mReadLumpedInputs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mMeteoDataPath\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mC:\\MyComputer\\01Algorithms\\hydrology\\Hapi\\Hapi\\catchment.py:622\u001b[0m, in \u001b[0;36mCatchment.readLumpedInputs\u001b[1;34m(self, Path, ll_temp)\u001b[0m\n\u001b[0;32m 596\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mReadLumpedInputs\u001b[39m(\n\u001b[0;32m 597\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 598\u001b[0m Path: \u001b[38;5;28mstr\u001b[39m,\n\u001b[0;32m 599\u001b[0m ll_temp: Union[\u001b[38;5;28mlist\u001b[39m, np\u001b[38;5;241m.\u001b[39mndarray]\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 600\u001b[0m ):\n\u001b[0;32m 601\u001b[0m \u001b[38;5;124;03m\"\"\"readLumpedInputs.\u001b[39;00m\n\u001b[0;32m 602\u001b[0m \n\u001b[0;32m 603\u001b[0m \u001b[38;5;124;03m readLumpedInputs method read the meteorological data of lumped mode\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 620\u001b[0m \u001b[38;5;124;03m average long term temperature.\u001b[39;00m\n\u001b[0;32m 621\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 622\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata \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\n\u001b[0;32m 623\u001b[0m \u001b[43m \u001b[49m\u001b[43mPath\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mheader\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdelimiter\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[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mindex_col\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# \"\\t\", #skiprows=11,\u001b[39;49;00m\n\u001b[0;32m 624\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 625\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdata\u001b[38;5;241m.\u001b[39mvalues\n\u001b[0;32m 627\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ll_temp \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", + "File \u001b[1;32m~\\anaconda\\envs\\py310\\lib\\site-packages\\pandas\\util\\_decorators.py:311\u001b[0m, in \u001b[0;36mdeprecate_nonkeyword_arguments..decorate..wrapper\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 305\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) \u001b[38;5;241m>\u001b[39m num_allow_args:\n\u001b[0;32m 306\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(\n\u001b[0;32m 307\u001b[0m msg\u001b[38;5;241m.\u001b[39mformat(arguments\u001b[38;5;241m=\u001b[39marguments),\n\u001b[0;32m 308\u001b[0m \u001b[38;5;167;01mFutureWarning\u001b[39;00m,\n\u001b[0;32m 309\u001b[0m stacklevel\u001b[38;5;241m=\u001b[39mstacklevel,\n\u001b[0;32m 310\u001b[0m )\n\u001b[1;32m--> 311\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n", + "File \u001b[1;32m~\\anaconda\\envs\\py310\\lib\\site-packages\\pandas\\io\\parsers\\readers.py:680\u001b[0m, in \u001b[0;36mread_csv\u001b[1;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, 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, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, error_bad_lines, warn_bad_lines, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options)\u001b[0m\n\u001b[0;32m 665\u001b[0m kwds_defaults \u001b[38;5;241m=\u001b[39m _refine_defaults_read(\n\u001b[0;32m 666\u001b[0m dialect,\n\u001b[0;32m 667\u001b[0m delimiter,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 676\u001b[0m defaults\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdelimiter\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m,\u001b[39m\u001b[38;5;124m\"\u001b[39m},\n\u001b[0;32m 677\u001b[0m )\n\u001b[0;32m 678\u001b[0m kwds\u001b[38;5;241m.\u001b[39mupdate(kwds_defaults)\n\u001b[1;32m--> 680\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[1;32m~\\anaconda\\envs\\py310\\lib\\site-packages\\pandas\\io\\parsers\\readers.py:575\u001b[0m, in \u001b[0;36m_read\u001b[1;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[0;32m 572\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[0;32m 574\u001b[0m \u001b[38;5;66;03m# Create the parser.\u001b[39;00m\n\u001b[1;32m--> 575\u001b[0m parser \u001b[38;5;241m=\u001b[39m TextFileReader(filepath_or_buffer, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwds)\n\u001b[0;32m 577\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m chunksize \u001b[38;5;129;01mor\u001b[39;00m iterator:\n\u001b[0;32m 578\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m parser\n", + "File \u001b[1;32m~\\anaconda\\envs\\py310\\lib\\site-packages\\pandas\\io\\parsers\\readers.py:933\u001b[0m, in \u001b[0;36mTextFileReader.__init__\u001b[1;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[0;32m 930\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[0;32m 932\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[1;32m--> 933\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[1;32m~\\anaconda\\envs\\py310\\lib\\site-packages\\pandas\\io\\parsers\\readers.py:1217\u001b[0m, in \u001b[0;36mTextFileReader._make_engine\u001b[1;34m(self, f, engine)\u001b[0m\n\u001b[0;32m 1213\u001b[0m mode \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrb\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 1214\u001b[0m \u001b[38;5;66;03m# error: No overload variant of \"get_handle\" matches argument types\u001b[39;00m\n\u001b[0;32m 1215\u001b[0m \u001b[38;5;66;03m# \"Union[str, PathLike[str], ReadCsvBuffer[bytes], ReadCsvBuffer[str]]\"\u001b[39;00m\n\u001b[0;32m 1216\u001b[0m \u001b[38;5;66;03m# , \"str\", \"bool\", \"Any\", \"Any\", \"Any\", \"Any\", \"Any\"\u001b[39;00m\n\u001b[1;32m-> 1217\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\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# type: ignore[call-overload]\u001b[39;49;00m\n\u001b[0;32m 1218\u001b[0m \u001b[43m \u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1219\u001b[0m \u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1220\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[0;32m 1221\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[0;32m 1222\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[0;32m 1223\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[0;32m 1224\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[0;32m 1225\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[0;32m 1226\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1227\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[0;32m 1228\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[1;32m~\\anaconda\\envs\\py310\\lib\\site-packages\\pandas\\io\\common.py:789\u001b[0m, in \u001b[0;36mget_handle\u001b[1;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[0m\n\u001b[0;32m 784\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[0;32m 785\u001b[0m \u001b[38;5;66;03m# Check whether the filename is to be opened in binary mode.\u001b[39;00m\n\u001b[0;32m 786\u001b[0m \u001b[38;5;66;03m# Binary mode does not support 'encoding' and 'newline'.\u001b[39;00m\n\u001b[0;32m 787\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[0;32m 788\u001b[0m \u001b[38;5;66;03m# Encoding\u001b[39;00m\n\u001b[1;32m--> 789\u001b[0m handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[0;32m 790\u001b[0m \u001b[43m \u001b[49m\u001b[43mhandle\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 791\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[0;32m 792\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[0;32m 793\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[0;32m 794\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[0;32m 795\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 796\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 797\u001b[0m \u001b[38;5;66;03m# Binary mode\u001b[39;00m\n\u001b[0;32m 798\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[1;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'Examples/data/lumped/meteo_data-MSWEP.csv'" + ] + } + ], + "source": [ + "start = \"2009-01-01\"\n", + "end = \"2011-12-31\"\n", + "name = \"Coello\"\n", + "\n", + "Coello = Calibration(name, start, end)\n", + "Coello.readLumpedInputs(MeteoDataPath)" + ] + }, + { + "cell_type": "markdown", + "id": "eccbe8ee", + "metadata": {}, + "source": [ + "### Basic_inputs" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "f29da93b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Lumped model is read successfully\n" + ] + } + ], + "source": [ + "# catchment area\n", + "AreaCoeff = 1530\n", + "# temporal resolution\n", + "# [Snow pack, Soil moisture, Upper zone, Lower Zone, Water content]\n", + "InitialCond = [0, 10, 10, 10, 0]\n", + "# no snow subroutine\n", + "Snow = 0\n", + "Coello.readLumpedModel(HBVLumped, AreaCoeff, InitialCond)" + ] + }, + { + "cell_type": "markdown", + "id": "623019fd", + "metadata": {}, + "source": [ + "# Calibration parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "7db2ce2d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Parameters bounds are read successfully\n", + "Gauges data are read successfully\n", + "Objective function is read successfully\n" + ] + } + ], + "source": [ + "# Calibration boundaries\n", + "UB = pd.read_csv(Path + \"/lumped/UB-3.txt\", index_col=0, header=None)\n", + "parnames = UB.index\n", + "UB = UB[1].tolist()\n", + "LB = pd.read_csv(Path + \"/lumped/LB-3.txt\", index_col=0, header=None)\n", + "LB = LB[1].tolist()\n", + "\n", + "Maxbas = True\n", + "Coello.readParametersBounds(UB, LB, Snow, Maxbas=Maxbas)" + ] + }, + { + "cell_type": "markdown", + "id": "718fd2f2-baa3-409b-ab63-dee645f70398", + "metadata": {}, + "source": [ + "### Additional arguments" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "50364d63-f5d0-421b-afef-f901f54ade93", + "metadata": {}, + "outputs": [], + "source": "parameters = []\n# Routing\nRoute = 1\nRoutingFn = Routing.triangular_routing_1\n\nBasic_inputs = dict(Route=Route, RoutingFn=RoutingFn, InitialValues=parameters)" + }, + { + "cell_type": "markdown", + "id": "ebf575cc-b095-4adc-94f5-649672244853", + "metadata": {}, + "source": [ + "### Objective function" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "4705d8b5-127f-4756-9163-1eec1d2678d9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gauges data are read successfully\n", + "Objective function is read successfully\n" + ] + } + ], + "source": [ + "# outlet discharge\n", + "Coello.readDischargeGauges(Path + \"Qout_c.csv\", fmt=\"%Y-%m-%d\")\n", + "\n", + "OF_args = []\n", + "objective_function = PC.RMSE\n", + "\n", + "Coello.read_objective_function(PC.RMSE, OF_args)" + ] + }, + { + "cell_type": "markdown", + "id": "baebdf63", + "metadata": {}, + "source": [ + "# Calibration" + ] + }, + { + "cell_type": "markdown", + "id": "a4e2b6e5", + "metadata": {}, + "source": [ + "API options\n", + "Create the options dictionary all the optimization parameters should be passed\n", + "to the optimization object inside the option dictionary:\n", + "\n", + "\n", + "to see all options import Optimizer class and check the documentation of the\n", + "method setOption" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "42e7aaea", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hms 100\n", + "hmcr 0.95\n", + "par 0.65\n", + "dbw 2000\n", + "fileout 1\n", + "xinit 0\n", + "filename F:/01Algorithms/Hydrology/HAPI/Examples/data/lumped//Lumped_History2021-05-15.txt\n" + ] + } + ], + "source": [ + "ApiObjArgs = dict(hms=100, hmcr=0.95, par=0.65, dbw=2000, fileout=1, xinit=0,\n", + " filename=Path + \"/Lumped_History\" + str(dt.datetime.now())[0:10] + \".txt\")\n", + "\n", + "for i in range(len(ApiObjArgs)):\n", + " print(list(ApiObjArgs.keys())[i], str(ApiObjArgs[list(ApiObjArgs.keys())[i]]))\n", + "\n", + "# pll_type = 'POA'\n", + "pll_type = None\n", + "\n", + "ApiSolveArgs = dict(store_sol=True, display_opts=True, store_hst=True, hot_start=False)\n", + "\n", + "OptimizationArgs = [ApiObjArgs, pll_type, ApiSolveArgs]" + ] + }, + { + "cell_type": "markdown", + "id": "78e02f69", + "metadata": {}, + "source": [ + "### Run Calibration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8712eeda-097d-46cb-821d-5e53918c15ce", + "metadata": {}, + "outputs": [], + "source": [ + "cal_parameters = Coello.lumpedCalibration(Basic_inputs, OptimizationArgs, printError=None)\n", + "\n", + "print(\"Objective Function = \" + str(round(cal_parameters[0], 2)))\n", + "print(\"Parameters are \" + str(cal_parameters[1]))\n", + "print(\"Time = \" + str(round(cal_parameters[2]['time'] / 60, 2)) + \" min\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8cb40098-5ace-40c8-8782-721570f7cbb0", + "metadata": {}, + "outputs": [], + "source": [ + "cal_parameters[2]['time']" + ] + }, + { + "cell_type": "markdown", + "id": "deddd63a", + "metadata": {}, + "source": [ + "### Run the Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5674017b", + "metadata": {}, + "outputs": [], + "source": [ + "Coello.Parameters = cal_parameters[1]\n", + "Run.runLumped(Coello, Route, RoutingFn)" + ] + }, + { + "cell_type": "markdown", + "id": "a22f97e8", + "metadata": {}, + "source": [ + "### Calculate Performance Criteria" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f372b9a6", + "metadata": {}, + "outputs": [], + "source": [ + "Metrics = dict()\n", + "\n", + "Qobs = Coello.QGauges[Coello.QGauges.columns[0]]\n", + "\n", + "Metrics['RMSE'] = PC.RMSE(Qobs, Coello.Qsim['q'])\n", + "Metrics['NSE'] = PC.NSE(Qobs, Coello.Qsim['q'])\n", + "Metrics['NSEhf'] = PC.NSEHF(Qobs, Coello.Qsim['q'])\n", + "Metrics['KGE'] = PC.KGE(Qobs, Coello.Qsim['q'])\n", + "Metrics['WB'] = PC.WB(Qobs, Coello.Qsim['q'])\n", + "\n", + "print(\"RMSE= \" + str(round(Metrics['RMSE'], 2)))\n", + "print(\"NSE= \" + str(round(Metrics['NSE'], 2)))\n", + "print(\"NSEhf= \" + str(round(Metrics['NSEhf'], 2)))\n", + "print(\"KGE= \" + str(round(Metrics['KGE'], 2)))\n", + "print(\"WB= \" + str(round(Metrics['WB'], 2)))" + ] + }, + { + "cell_type": "markdown", + "id": "dd845231", + "metadata": {}, + "source": [ + "### Plotting Hydrograph" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "09268e7d", + "metadata": {}, + "outputs": [], + "source": [ + "gaugei = 0\n", + "plotstart = \"2009-01-01\"\n", + "plotend = \"2011-12-31\"\n", + "Coello.plotHydrograph(plotstart, plotend, gaugei, Title=\"Lumped Model\")" + ] + }, + { + "cell_type": "markdown", + "id": "249dc415", + "metadata": {}, + "source": [ + "### Save the Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0ec9ee5d", + "metadata": {}, + "outputs": [], + "source": [ + "ParPath = Path + \"Parameters\" + str(dt.datetime.now())[0:10] + \".txt\"\n", + "parameters = pd.DataFrame(index=parnames)\n", + "parameters['values'] = cal_parameters[1]\n", + "parameters.to_csv(ParPath, header=None, float_format=\"%0.4f\")" + ] + }, + { + "cell_type": "markdown", + "id": "30c36ce1-4cee-4c20-b368-7ffe4b69cdd7", + "metadata": {}, + "source": [ + "### Save Results" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3007b8a1-627f-4e88-b036-756f7cdedb9f", + "metadata": {}, + "outputs": [], + "source": [ + "StartDate = \"2009-01-01\"\n", + "EndDate = \"2010-04-20\"\n", + "\n", + "Path = Path + \"Results-Lumped-Model\" + str(dt.datetime.now())[0:10] + \".txt\"\n", + "Coello.saveResults(Result=5, StartDate=StartDate, EndDate=EndDate, Path=Path)" + ] + } + ], + "metadata": { + "kernelspec": { + "name": "pycharm-cd49064f", + "language": "python", + "display_name": "PyCharm (Hapi)" + }, + "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.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/examples/hydrological-model/Note books/coello-lumped-model-run-muskingum.ipynb b/examples/hydrological-model/Note books/coello-lumped-model-run-muskingum.ipynb index 42c36a793..0a1822511 100644 --- a/examples/hydrological-model/Note books/coello-lumped-model-run-muskingum.ipynb +++ b/examples/hydrological-model/Note books/coello-lumped-model-run-muskingum.ipynb @@ -1,460 +1,456 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "a364d52f-69a7-475b-933d-89650d591a05", - "metadata": {}, - "source": [ - "# Lumped Conceptual Model" - ] - }, - { - "cell_type": "markdown", - "id": "5ec32bfb-e0a3-47c1-9371-b9225ee110e0", - "metadata": {}, - "source": [ - "- please change the directory to the root directory of the repo" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "e6b2629f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": "'C:\\\\MyComputer\\\\01Algorithms\\\\Hydrology\\\\Hapi'" - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import os\n", - "\n", - "\n", - "os.chdir(\"../../../\")\n", - "os.getcwd()" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### make sure the above path refers to the root directory of the repo\n", - "\u251c\u2500\u2500 Hapi\n", - "\u2502 \u251c\u2500\u2500 Examples\n", - "\u2502 \u2502 \u251c\u2500\u2500 data\n", - "\u2502 \u2502 \u251c\u2500\u2500 GIS\n", - "\u2502 \u2502 \u251c\u2500\u2500 Hydrological model\n", - "\u2502 \u2502 \u2502 \u251c\u2500\u2500 data\n", - "\u2502 \u2502 \u2502 \u251c\u2500\u2500 Note books\n", - "\u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 lumped-model-run-coello.ipynb (current file)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "markdown", - "id": "0c51f000", - "metadata": {}, - "source": [ - "### Import Modules" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "efd94b20", - "metadata": {}, - "outputs": [], - "source": [ - "import datetime as dt\n", - "\n", - "import Hapi.rrm.hbv_bergestrom92 as HBVLumped\n", - "import Hapi.sm.performancecriteria as PC\n", - "from Hapi.catchment import Catchment\n", - "from Hapi.rrm.routing import Routing\n", - "from Hapi.run import Run" - ] - }, - { - "cell_type": "markdown", - "id": "883d3c98", - "metadata": {}, - "source": [ - "### Paths" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "78d8611e", - "metadata": {}, - "outputs": [], - "source": [ - "Parameterpath = \"Examples/Hydrological model/data/lumped_model/Coello_Lumped2021-03-08_muskingum.txt\"\n", - "MeteoDataPath = \"Examples/Hydrological model/data/lumped_model/meteo_data-MSWEP.csv\"\n", - "\n", - "Path = \"Examples/Hydrological model/data/lumped_model/\"\n", - "SaveTo = \"Examples/Hydrological model/data/lumped_model/\"" - ] - }, - { - "cell_type": "markdown", - "id": "85e3c2f9", - "metadata": {}, - "source": [ - "### Meteorological data" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "5812a7f5", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-20 00:08:44.371 | DEBUG | catchment:readLumpedInputs:720 - Lumped Model inputs are read successfully\n" - ] - } - ], - "source": [ - "start = \"2009-01-01\"\n", - "end = \"2011-12-31\"\n", - "name = \"Coello\"\n", - "Coello = Catchment(name, start, end)\n", - "Coello.readLumpedInputs(MeteoDataPath)" - ] - }, - { - "cell_type": "markdown", - "id": "eca51f8c-de23-4743-9e80-0ea3497a17b5", - "metadata": {}, - "source": [ - "### Lumped model" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "e99e1b85", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-20 00:08:48.044 | DEBUG | catchment:readLumpedModel:678 - Lumped model is read successfully\n" - ] - } - ], - "source": [ - "# catchment area\n", - "AreaCoeff = 1530\n", - "# [Snow pack, Soil moisture, Upper zone, Lower Zone, Water content]\n", - "InitialCond = [0, 10, 10, 10, 0]\n", - "\n", - "Coello.readLumpedModel(HBVLumped, AreaCoeff, InitialCond)" - ] - }, - { - "cell_type": "markdown", - "id": "38e7ae6a-d43a-4fc0-9985-4dd69b5f84e1", - "metadata": {}, - "source": [ - "### Model Parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "bb1d0450-e973-44af-88af-f6f8e44c1783", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-20 00:08:50.314 | DEBUG | catchment:readParameters:624 - Parameters are read successfully\n" - ] - } - ], - "source": [ - "Snow = 0 # no snow subroutine\n", - "Coello.readParameters(Parameterpath, Snow)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "256545fe-9c7c-4628-b559-f43a307c5db4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": "[0.7,\n 51.1726422,\n 1.147999,\n 0.1,\n 0.88137,\n 0.82353,\n 0.35651,\n 0.03223,\n 47.426,\n 5.2744,\n 1.0,\n 0.2]" - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Coello.Parameters" - ] - }, - { - "cell_type": "markdown", - "id": "602e4629", - "metadata": {}, - "source": [ - "### Observed flow" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "54555e66", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-20 00:08:54.915 | DEBUG | catchment:readDischargeGauges:867 - Gauges data are read successfully\n" - ] - } - ], - "source": [ - "Coello.readDischargeGauges(Path + \"Qout_c.csv\", fmt=\"%Y-%m-%d\")" - ] - }, - { - "cell_type": "markdown", - "id": "60f825cc-49ee-4680-b8cb-901bd11774ec", - "metadata": {}, - "source": [ - "- the discharge data should be stored in the text file with the date stored in the first column and the discharge values in the second column" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "outputs": [ - { - "data": { - "text/plain": " q\n2009-01-01 51.10\n2009-01-02 56.23\n2009-01-03 52.22\n2009-01-04 47.72\n2009-01-05 41.31\n... ...\n2011-12-27 44.02\n2011-12-28 42.35\n2011-12-29 39.76\n2011-12-30 37.68\n2011-12-31 36.64\n\n[1095 rows x 1 columns]", - "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
q
2009-01-0151.10
2009-01-0256.23
2009-01-0352.22
2009-01-0447.72
2009-01-0541.31
......
2011-12-2744.02
2011-12-2842.35
2011-12-2939.76
2011-12-3037.68
2011-12-3136.64
\n

1095 rows \u00d7 1 columns

\n
" - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Coello.QGauges" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "markdown", - "id": "894ecdc8", - "metadata": {}, - "source": [ - "### Routing" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "f80b814a", - "metadata": {}, - "outputs": [], - "source": [ - "# RoutingFn = Routing.TriangularRouting2\n", - "RoutingFn = Routing.Muskingum_V\n", - "Route = 1" - ] - }, - { - "cell_type": "markdown", - "id": "560380a3-6dd5-44a5-b9c4-8d65e53d5a5f", - "metadata": {}, - "source": [ - "### Run The Model" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "c4f9c7fc-c087-4fef-be5c-f970e1f13f68", - "metadata": {}, - "outputs": [], - "source": [ - "Run.runLumped(Coello, Route, RoutingFn)" - ] - }, - { - "cell_type": "markdown", - "id": "3b30a30b", - "metadata": {}, - "source": [ - "### Calculate performance criteria" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "7e1a0414", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "RMSE= 24.59\n", - "NSE= 0.12\n", - "NSEhf= 0.21\n", - "KGE= 0.56\n", - "WB= 96.59\n" - ] - } - ], - "source": [ - "Metrics = dict()\n", - "\n", - "# gaugeid = Coello.QGauges.columns[-1]\n", - "Qobs = Coello.QGauges['q']\n", - "\n", - "Metrics['RMSE'] = PC.RMSE(Qobs, Coello.Qsim['q'])\n", - "Metrics['NSE'] = PC.NSE(Qobs, Coello.Qsim['q'])\n", - "Metrics['NSEhf'] = PC.NSEHF(Qobs, Coello.Qsim['q'])\n", - "Metrics['KGE'] = PC.KGE(Qobs, Coello.Qsim['q'])\n", - "Metrics['WB'] = PC.WB(Qobs, Coello.Qsim['q'])\n", - "\n", - "print(\"RMSE= \" + str(round(Metrics['RMSE'], 2)))\n", - "print(\"NSE= \" + str(round(Metrics['NSE'], 2)))\n", - "print(\"NSEhf= \" + str(round(Metrics['NSEhf'], 2)))\n", - "print(\"KGE= \" + str(round(Metrics['KGE'], 2)))\n", - "print(\"WB= \" + str(round(Metrics['WB'], 2)))" - ] - }, - { - "cell_type": "markdown", - "id": "da4641e2", - "metadata": {}, - "source": [ - "### Plot Hydrograph" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "17053377", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-03-20 00:10:49.092 | DEBUG | catchment:plotHydrograph:1142 - ----------------------------------\n", - "2022-03-20 00:10:49.092 | DEBUG | catchment:plotHydrograph:1143 - Gauge - q\n" - ] - }, - { - "ename": "AttributeError", - "evalue": "'NoneType' object has no attribute 'loc'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Input \u001b[1;32mIn [19]\u001b[0m, in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 2\u001b[0m plotstart \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m2009-01-01\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 3\u001b[0m plotend \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m2011-12-31\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m----> 4\u001b[0m \u001b[43mCoello\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mPlotHydrograph\u001b[49m\u001b[43m(\u001b[49m\u001b[43mplotstart\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mplotend\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgaugei\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mTitle\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mLumped Model\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", - "File \u001b[1;32mC:\\MyComputer\\01Algorithms\\Hydrology\\Hapi\\Hapi\\catchment.py:1144\u001b[0m, in \u001b[0;36mCatchment.plotHydrograph\u001b[1;34m(self, plotstart, plotend, gaugei, Hapicolor, gaugecolor, linewidth, Hapiorder, Gaugeorder, labelfontsize, XMajorfmt, Noxticks, Title, Xaxis_fmt, label, fmt)\u001b[0m\n\u001b[0;32m 1142\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m----------------------------------\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 1143\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mGauge - \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mstr\u001b[39m(gaugeid))\n\u001b[1;32m-> 1144\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRMSE= \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mround\u001b[39m(\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mMetrics\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloc\u001b[49m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRMSE\u001b[39m\u001b[38;5;124m\"\u001b[39m, gaugeid], \u001b[38;5;241m2\u001b[39m)))\n\u001b[0;32m 1145\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNSE= \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mround\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mMetrics\u001b[38;5;241m.\u001b[39mloc[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNSE\u001b[39m\u001b[38;5;124m\"\u001b[39m, gaugeid], \u001b[38;5;241m2\u001b[39m)))\n\u001b[0;32m 1146\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNSEhf= \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mround\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mMetrics\u001b[38;5;241m.\u001b[39mloc[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNSEhf\u001b[39m\u001b[38;5;124m\"\u001b[39m, gaugeid], \u001b[38;5;241m2\u001b[39m)))\n", - "\u001b[1;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'loc'" - ] - }, - { - "data": { - "text/plain": "
", - "image/png": "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3ooQghkzZrRPxxQKRRAVM7/FsS0HpKTo9ifbuztBKAGlaHEGDhzIO++84/vudDr5+OOP6devXzv2SqFQBOIq3tPeXQiJElARymWXXca//vUv3/d58+bRo0cP3/fs7GyefPJJhg8fTkJCAldeeSUFBQWceOKJJCUlMXHiRPbs8dx8DWav119/nW7dupGVlcXTTz/t25fb7eaxxx6jX79+ZGRkcO6551JaWupb/7///Y/evXuTkZHBI4880mjfJ0+ezMKFC33H//777xk+fDhdu3bVHfPhhx+md+/edO7cmUsuuYTy8vKwjtlYfxUKRZhEeKKG/VJA3f/BUsTk11vkb/KD37fbeXz66afMmTOHjRs38tVXX3HiiSfy73//m+LiYtxuNy+88IKu/S+//MKmTZv48ccfeeyxx3ymxRdeeIHZs2czf/58cnNzSUtL44YbbgBg7dq1XHfddfzvf/8jNzeXkpIScnJyQvYrNjaWU089lVmzZgHw7rvvcskll+jazJgxgxkzZvDLL7+wdetWqqqquPHGG8M6Zqj+KhSKjsN+KaA6CjfddBNdunShe/fuHHHEEYwdO5ZRo0YRExPDGWecwV9//aVrf99995GQkMCBBx7I5ZdfzsyZMwF47bXXeOSRR+jRowcxMTHcf//9fPLJJzidTj755BNOOeUUjjzySGJiYnjooYewWBq/bS655BLeffddysvLmT9/Pqeffrpu/fvvv89tt91G3759SUxM5NFHH2XWrFlhHTNUfxUKRcehw6c66sh06dLF9zkuLi7oe1VVla59z57+Cia9e/dm1apVAOzYsYMzzjhDJwSsVisFBQXk5ubqtktISCAjI6PRvh1++OEUFRXx8MMPc8oppwQFS+fm5tK7d29df5xOZ1jHDNVfhULRcdgvBdT9U0Zz/5SgvIQRRUJCAjU1Nb7v+fn5e73PXbt2MXjwYAB27txJt27dAI/geuuttzjssMOCtsnKymLdunW+7zU1NZSUlIR1vIsuuogHH3yQX375JWhdt27d2LHDX0Rz586d2Gw2unTp0ugxQ/V3+/btYfVNoVBEPsrEFwE4HA7q6up8f06nk5EjR/Ltt99SWlpKfn4+zz333F4f56GHHqKmpoY1a9bw9ttvc9555wFw7bXXcs899/gERlFREV984SnNdfbZZ/P111/z22+/YbfbmT59Om63O6zj3XzzzcyZM4cjjzwyaN0FF1zAs88+y7Zt26iqquLuu+/mvPPOw2azNXrMUP1VKBQdByWgIoCTTjqJuLg439/999/PxRdfzIgRI8jOzua4447zCZO94aijjqJ///4ce+yx3HHHHRx33HEA3HLLLZx66qkcd9xxJCUlMW7cOBYvXgzAsGHDePnll5kyZQpZWVmkpaXpvAlDkZ6ezrHHHmuYYuiKK67g4osv5sgjj6RPnz7Exsby4osvhnXMUP1VKBQdhw5fD2rdunUMGTKkHXoUOWzfvp0+ffrgcDiw2fZLq64PdT8oFH5Kn3qbPY+/5fver2hBu/TDrB6U0qAUCoVCEZEoAaVQKBSKiGT/tvfsJ2RnZ9NRTLkKhWL/QWlQCoVCsb8S4eNWJaAUCoVCEZEoAaVQKBSKiEQJKIVCoVBEJEpAKRQKhSIiUQJKoVAoFBGJElARwKxZsxg7diwJCQl07tyZsWPH8sorryjXcIVCsV+jBFQ78/TTT3PLLbfwf//3f+Tn51NQUMB//vMfFi5ciN1ub+/uKRQKRbuhBFQ7Ul5ezvTp03nllVc4++yzSUpKQgjBqFGjeP/994mJieGbb75h1KhRJCcn07NnT+6//37f9oFl4METlNtQKbe2tpZLL72UtLQ0hgwZwhNPPKFrn5uby1lnnUVmZiZ9+vQJqsCrUCgU7cl+l0liS+YRbXasxhIv/vHHH9TX13PaaaeZtklISODdd99l2LBhrF69mkmTJjFy5MigCrVGPPDAA2zfvp2tW7dSXV3NSSed5FvndruZPHkyp512GjNnziQnJ4eJEycyaNAgjj/++LDPUaFQKFoLpUG1I8XFxXTq1EmXYXz8+PGkpqYSFxfHr7/+yoQJEzjwwAOxWCwMHz6cCy64gPnz54e1/48++oi7777bV67i5ptv9q37888/KSoqYvr06URHR9O3b1+uuuoqZs2a1eLnqVAoFM1hv9OgIomMjAyKi4txOp0+IfX7778D0KNHD9xuN4sXL2batGmsXr0au91OfX0955xzTlj7Dyydrv28Y8cOcnNzSU1N9S1zuVwccUTbaZgKhaKdiXBHrP1OQLVXvRMjDj30UGJiYvjiiy8466yzDNtMmTKFG2+8ke+++47Y2FhuvfVWiouLgeCy8C6Xi6KiIt/3rKwscnJyGDp0KOAp+d5Az5496dOnD5s2bWqNU1MoFIq9Rpn42pHU1FTuu+8+rr/+ej755BOqqqpwu92sWLGC6upqACorK0lPTyc2NpYlS5bwwQcf+LYfOHAgdXV1fPPNNzgcDh5++GHq6+t9688991weffRR9uzZw+7du3nppZd868aMGUNycjKPP/44tbW1uFwuVq9ezZ9//tl2F0ChUChCoARUO3PnnXfyzDPP8MQTT9C5c2e6dOnCNddcw+OPP8748eN55ZVXmD59OklJSTz44IOce+65vm1TUlJ45ZVXmDp1Kt27dychIUHnpTd9+nR69OhBnz59mDhxImeffTYxMTEAWK1WvvrqK1asWEGfPn3o1KkTU6dOpby8vM2vgUKhUBihSr7vR7z66qvMmjUrbCeLjoi6HxTNQUqJEKK9u9HilD7xFnuefNv3XZV8V7QZeXl5LFy4ELfbzYYNG3j66ac544wz2rtbCsU+RfH0l9g+eDIV//uqvbuy36EEVAfGbrdzzTXXkJSUxDHHHMNpp53G9ddf397dUij2GZy7Cyh/9UPcpeUU3fZEe3dnv6NNvPiEED2Bd4GugBt4XUr5vBDifuAqoMH17G4p5bfebe4CrgRcwM1Syh/aoq8did69e7N69er27oZCsc/iKlFzsu1JW7mZO4HbpZTLhRBJwDIhxBzvumellE9pGwshhgLnA8OAbsBcIcRAKaWrjfqrUCgUinamTUx8Uso8KeVy7+dKYB3QPcQmpwGzpJT1UsptwGZgTHOP73a7m7upogOh7gOFYt+izeeghBDZwChgsXfRjUKIv4UQbwkh0rzLugO7NJvlYCDQhBBXCyGWCiGWagNUtSQkJLB7927sdrsqX7GfIqXEbreze/duEhIS2rs7in2JDui5ty/RppkkhBCJwKfArVLKCiHEq8BDgPT+fxq4AjC6K4Kki5TydeB18LiZGx2zR48eFBcXs2PHDpxOZ8uciGKfw2azkZKSQqdOndq7KwpF5BDhg/Y2E1BCiCg8wul9KeVnAFLKAs36N4CvvV9zgJ6azXsAuc05rsVioXPnznTu3LlZ/VYoFApF+9AmJj7hiXB7E1gnpXxGszxL0+wMoMHl7EvgfCFEjBCiDzAAWNIWfVUoFApFZNBWGtRhwMXAKiHECu+yu4ELhBAj8ZjvtgPXAEgp1wghPgLW4vEAvEF58CkUCsX+RZsIKCnlbxjPK30bYptHgEdarVMKhUKxvxPhTiAqk4RCoVDsr0S4k4QSUAqFQmFGhGsYHR0loBQKhUIRkSgBpVAoFIqIRAkohUKhUEQkSkApFAqFGWoKql1RAkqhUCj2V5QXn0KhUCgUTUcJKIVCoVBEJEpAKRQKhSIiUQJKoVAozOjogboRfn5tWg9KoVAoIh13bT0l01/EXVNP8pST2rs7rUuEO0koAaVQKBQayl58n4oZXwDg2LCtnXuzf6NMfAqFQqGhYsZs3+f6lRvaryMKJaAUCoVCEZkoAaVQKBSKiEQJKIVCodAR2Z5t+xNKQCkUCsX+SmQ78SkBpVAoFIrIRAkohUKhUEQkSkApFAqFIiJRAkqhUCi07E8+EhF+rkpAKRQKxf6KcpJQKBQKhaLpKAGlUCgUYSIjPLlqR0MJKIVCoQgXJaDaFCWgFAqFQkuE10jan1ACSqFQKMJFaVBtihJQCoVCES4dTEBF+pyaElAKhUIRLpH9Pu9wKAGlUCgUiohECSiFQqHQEspJIsJNYh0NJaAUCoUiXDqYgBIR7rGoBJRCoVDspygnCYVCoeggRPoLvaOhBJRCoVCEi5JPbUqbCCghRE8hxC9CiHVCiDVCiFu8y9OFEHOEEJu8/9M029wlhNgshNgghDi+LfqpUCgUykkicmgrDcoJ3C6lHAKMA24QQgwFpgE/SSkHAD95v+Nddz4wDDgBeEUIYW2jvioUiv0ZJYQihjYRUFLKPCnlcu/nSmAd0B04DXjH2+wd4HTv59OAWVLKeinlNmAzMKYt+qpQKBSmKOHVprT5HJQQIhsYBSwGukgp88AjxIDO3mbdgV2azXK8ywL3dbUQYqkQYmlRUVGr9luhUOwn7E8mvgg/nzYVUEKIROBT4FYpZUWopgbLgq6klPJ1KeVoKeXozMzMluqmQqFQKCKANhNQQogoPMLpfSnlZ97FBUKILO/6LKDQuzwH6KnZvAeQ21Z9VSgU+zERHry6P9FWXnwCeBNYJ6V8RrPqS+BS7+dLgS80y88XQsQIIfoAA4AlbdFXhUKxnxPK7BXhJrGOhq2NjnMYcDGwSgixwrvsbuAx4CMhxJXATuAcACnlGiHER8BaPB6AN0gpXW3UV4VCoTBEBeq2Lc0SUEKIowGXlPLXcNpLKX/DeF4J4FiTbR4BHmlO/xQKhaLZ7E9OEhFOWCY+IcR8IcRh3s//BGYBM4UQd7dm5xQKhUKx/xLuHNQBwCLv56uACXgCbq9thT4pFApFuxHSR0IpUG1KuCY+CyCFEP0AIaVcB6BNTaRQKBQdgZBWPGXia1PCFVC/AS8BWcDnAF5hVdxK/VIoFArFfk64Jr7LgDLgb+A+77LBwPMt3yWFQqFoP0Kb+JQG1ZaE1KCEEA8D3wJ/SCl1DhFSym9as2MKhUIRcXQ0ARXh59OYBlUNPA7kCSHeF0JcKITIaIN+KZqIs6CE2oV/Id3u9u6KQrFvo9zMI4aQAkpK+aiU8gg85rwvgeOB1UKI34UQ/xJCHNQWnVSExl1Zzc6xF5B7+s2UPfdee3dHodi32Z+EUISndQprDkpKWSal/FBKeQnQDbgViAJeE0LsFkKc14p9VDRC+eufIKtrASh99I127o1C0XHpcLIrwk+oyZkkpCfXxxLv331CiM5ASkt3TBE+7rr69u6CQtFxUCa+iKFRASWEGAX0w+MsUQ9c5/3+k5TyayllIf4s5AqFQtFxUQKqTQlp4vMmcf0WeAH4FfgnnjLsiXhSHV3R6j1UNE6E25EVCjPsjgjMAa2ep4ihsTmo/wOOAo4GDgLmSSmvk1JeBZwN3NLK/VOEgxrVKfYx/txYiJj8OjFnvsnM+Zvbuzt6VLmNiKExAZUlpdwopdwA1AJ/aNbNAXq3Ws8UCkWHZczts32fpzz1c/t1RBHRNBoH5a2ECzBD6ouhxAEq6CYSUCYJhaLlUE4SEUNjAuonoD+AlPKGgHWn4El9pFAoFB0HJYQihpBefFLKi0Os/hmPAFMoFIoOwZ4X38eZU2DeoKMJrwg/n2aXfJdSFrVkRxQKhaK9KX3wP6EbRPgLvaMRbkXdEUKIn4UQpUIIu/fPIYSwt3YHFQqFQtFKRPj8dbga1EzgU+BmPN58ighCRPhNplB0FDqcAhXhJxSugOoKTA/w4lMoFIr9C/UKbFPCLVj4DjClNTuiUCgUEY8SUG1KuBrUY8AfQoi7AZ2Li5TymBbvlaJpKAufQqHogIQroD4BtgGfo+agIg81qFPsw5xySK/27gIAYc1gKA2qTQlXQI0EMqSUymtPoVC0KDFR1vbugoewBFTrd0PhJ9w5qAXA0NbsiGIvUCY+xT7Mp79va+8uhI/SoNqUcDWobcCPQojPCZ6Dmt7ivVIoFIq2RgmfiCNcARUPfANEAz01y9UvqlAomowQESgP9sc5qAg/nbAElJTy8tbuiEKh2H/ISosnt7QGgCVPn96+nWkgLPkU4W/0Dka4c1AKhULRYlgs/onTLqnx7dgTDWEJnw4moMKYv3a53O0mmJWA6gioVEeKfQzt+y5ibt/9UTtq5JSXby6m95UzOejWz6isaXsn7mZnM1coFIrm8p/rD6em3okEMpJi27s7QLhxUK3fj0jihPu/pai8jt0l1Ux/fynPXjW+TY+vBJRCoWhzThrdi8LyWqSE8ho78bER8CoKy8K3f0moovI63+clm9q+wlLYd4UQYhJwPtBZSjlZCDEaSJZS/txqvVMoFB2SPVX1ZF3yHgBpiTGUzry0nXvEfid8mkp7XJ5w60HdBLwKbAKO9C6uBR5upX4pFIoOjNZJImI84/ZHN/MIJ1wniVuBiVLKxwC3d9l6YFBrdEqhUHRsLBrPCHekvPSVgApJezizhCugkoBd3s8Nv1AUEJZbhxDiLSFEoRBitWbZ/UKI3UKIFd6/kzTr7hJCbBZCbBBCHB9mH/dfIsYNSqEIj7G3f+77XFHjaMeeNJH9Vz5FrokP+BWYFrDsZuCXMLefAZxgsPxZKeVI79+3AEKIoXjmuoZ5t3lFCBEh2SQVCkVLsLOoqr27EMx+rB2Zcd2J/hSsp43t3ebHD1dA3QScIYTYDiQJITYA5wC3hbOxlPJXoDTMY50GzJJS1ksptwGbgTFhbqtQKPYBRARq/eHMhUXMfFmLEfp84mL8uoHN2vZhs2EdUUqZBxwCnIensu6lwFgpZf5eHv9GIcTfXhNgmndZd/zmRIAc7zKFQtFBWPbsmb7PNmuECCs1BxWEdq7Q5XaHaNlKxw+3ofSwWEr5sZRykZRyb3v7KtAPT62pPOBp73Kju9XwrhBCXC2EWCqEWFpU1PY++gqFonn07Zrk+xyJ2pQpHU5Ahb72Vo23ZTvIp7DdzHcJIXYa/G0SQvwihLhJCNGkSDspZYGU0uUVdG/gN+PloM+Y3gPINdnH61LK0VLK0ZmZmU05fMdiX3rAFQr0buZud/u89KXDSc28P3GVVXoXtEs32pnQJ51TUu37XFnb9qmOwtWgXgD2AA8AU4EHgRLgbeBDPA4T/27KgYUQWZqvZwANHn5fAucLIWKEEH2AAcCSpuxboVBENtohVXu5mRf98xnyzrmNnIlXIl0uVVHXgPfnbfZ9/mVVXpsfP1yt5zJgkpTSp8kIIb4DfpRSDhNC/ALMBe402lgIMROYAHQSQuQA9wEThBAj8fzk24FrAKSUa4QQHwFrASdwg5TS1eQzUygUEUtFrd+1vL2sZpX/+woA54486v5YSfTQfo1v1OFMfJFNuAIqCwj0C60Gunk/bwRSzTaWUl5gsPjNEO0fAR4Js28KhWIfo/cVH+i+SylbZS5qR2ElXy7egcUi6JWZyOQxxq7S0hmuBrX/Cqi46LaP9glXQH0FfCGEeATPHFEP4C7vcoBD8WhBCoViP2PNjlLe+XkjZ43vy9hBncPaJvA173ZLrK3gzbd25x5ufv13AI4/qIepgCqpdbJiRS79hYXovfb/6jjYP5+Ky+3GIkS7uJmHK6CuAe4HXsOjNeUCH+OZiwLYCpzc0p1TKBSRz4S7v6a4oo4nP/sb++dTibI1/iILjCdyS2iN8bk2IPiH5TmGbZwIjvtgA1vL7JzW91Ce3rLQfIf7mQYVZbMQ1Y5lAxs9sjeLw2vAfVLKflLKOO//aVLKGgApZb6Ucmdrd1ZhgnLiU7QjxRX+kgwFZTVhbRP4nm/PANi/kjLZWubxUPsis2+79UMRTKMCyuugcBz+JLEKhUJhSLhyJliDah0BNbxPhu+zmfmxwhrdKsdW7D3hmvieBR4QQtwvpWx7Z3iFQrFPELaACvj+5eId/LY2n5smH8CAbikt1h9rGPFWtdbwQzg7Xqqj0Lw/bxOrd+xBCDj/iH46gd8WhPvL3AR0BW4TQhShub+klL1ao2MKhWLfQzYzUOi8J34CYO7K3ax95dwW648+VY9x3+yiCXMs+5mAuuhpfz7wX/7O5Y+nTm/T44croC5q1V4oFIoOQfgmPuPl63aVtVhfIECDMjmoWyPEzijaEnqH+5mAam/CElBSyvmt3RHFXqBSHSkihHBNYNp2j182hn/OaJ1kMX9tLfZ9XrG1xLBNjcX/GkxwNVKbqqMJqCacT/eMhFbsiDFhG1+9WR+OADqh8RuTUk5v+W4pFIp9kXBfd9p2WWnxrdEVAHYVVzfaxqUZ4Nkae2G3U97A9mJEnwxWbvMI9n+dN6rNjx9ustirgYXAMcA/gQOB24H+rdc1xevfr6PHZe/z0Kzl7d0VhSIsmuPFlxgX1Uq9CS8Cw6WZg7I1EqQrXfuXM7O2xIalHSw14c4O3gmcIKU8A6j1/j8b2IdqNe97XPPyAnaXVDP9/aWUVdW3d3cUikYJ38Tn/5yWGOP7PH5IlxbtTzjpkxwaAfXfbsNCa4HtUXOiHdGernY+r60IV0B1llIu8H52CyEsUsrvgMmt1C9FAJW1aiygiEy0buHhxjNpW+3SZHuwWVo2a0E4g353QCN3KL2ro81BAXXCPIeH9ve0tIOACncOKkcIkS2l3I4nMexpQohiQMVEKRQGfLJwKz+vzEUIOGt8H44Z0XGLQk89bhAllfVYhNBpQ6HQalqXPDvP97ml8/GFszdngIByCYHVRBDJDqRBSSm5aLOFnw45j+nb/+SCwk1BbTbllvs+/7Y2nyE904LatCbhCqgngCF4EsI+CHwCROOpA6VoA0IN3ITKdRRxLFybz6vfrQWgf1ZyhxZQd541ssnbmN3PthYepYcz6ndpDEkpznosoR62DuQk8fu6Ar4vs4AF7u07zlBAaWPH3pqzgauOH9KWXQzbzXyG5vN3Qog0IFpKGViCQ9FKhBpZNjc4UtF6aN9j+1RJ83ZmzordLbq/cAZvWg3qqtw12EI9T66OU5ouf094eRPbkyYZfIUQnYUQffGU22j4rNgL/tpSzG3//YNb3/idGXM36NZpR39dUuPaumuKveCbpf7cyZ/+vq0de9I8ZL0dx47cRtvVO1wceOPHjLjpE8be/nl4+w7QUN75x4Rm9DA8whkbNMXNXHYgDSoloWk5CNvjzMPSoIQQJ+ApMNgVvVlX0jpZ8vcbNuaW8+wXqwA49/C+XDZxkG+dNndYKA8aZeKLPLbkVfg+a4NF9wVkvZ2d4y/CuTOPTo/eSsrUs0zbulyS1Tv2ABAbZkG74Ezmze5qo4QnoPzjdGtjtaA60BzU8Gx/Xr00R12Ilu1HuBrUy8BDQKKU0qL5U8JpL9HGFmg9ZgJHmcpMtO9ilqQ0UqmY+S3OnXkAFN/1XMi2WvNynd2lm1Q33UZzbwsBtlYoVOjff+P77lVXyZG9kjiiXxpd7Y2YvTqQF1+0pm6XI4x8hO3xBgrXSSINeE3ub6l8W4ldRVWkJESTHB/NiD7pPHXFOKwWoXfXdTfBvVMJr4jjsCFdWLiuAIDzjujXzr1pGu7SisYbeYmLthEXbaXW7pmbKa1sPF7PYhFsfv18pPSIt6Wbinzrzj+yZa9VOE/GJQUbWJdwAkVOeLfrYMZUFJDhNDmPDqRBxUT59QtHGO797fHyD1eDehO4vDU7sr/w9ZIdZE+dSffL3id/Tw1Wi4UhPVM5oHcag3uk+tppvWfcbkllTQiPfjVuiDgOzE73fR4zMLwy6PsaTpebt+Zs8Akn0GceMEMIQb+sZHJKqtmQU8Znf/jn6Fraiy9cy8MfOVXM21TKn8ldqLeYG4Y60hxUUzWo9sBUgxJCLMAvNAVwixBiGpCvbSelPLL1utfxmPzQDwBU1Tq48+3FHNA7zZco8//OHM4Tl48DggMec0trGBSvCqvtK2g14H1OwQ2zv5//sZ2rXvoVgGNHdOfaE4cwsFtq2Ie55uUFbNytNwnarC37oowKc3/aZs5QL+sO5MW3WTNP6hYWnBE4lx3KxPffRr4r9pLdJdUM6u4362kfpsCBaMgI/X3uDdjx0f5aHfXX0TqCHNy/E2cf1jSnXu38639vOpIB3VLITIltsf4BxMX4taErJ/kdkAJnK6zaueBQz1MH0qCWb9E774Rj5mtrTAWUlPKdtuzI/ojFIrA7/ZIoSqNyBwqkxNjWS6ipaHm0P197pIhpC7TvM7vDhdstwzpXKSVl1XYqNGbrf/z3DwZ0S8Hllix99owW06RMfwfNijlpPdha5p9zcoUYUsjGvPz2IbTvHohMM1+42cxfEEKMD1g2XgjxXKv0aj/BahH8vr7A9/2Bmf6s5do5qKS4KHpmJrZp3xR7x5dLdvg+3/3un+3Yk9YjMyXOp/E89+VqOl/0bljb1da7SL/gHXJL/R5zlbUOlm8pZuW2khb1etQO9HRiR2Oi+LJTH902rlAv6g6kQQ3pmar7bg8x9wbtYwkIV2ReACwNWLYMmNKy3dm/sFoEhWW1huvaO0mjYu/Yo8k+X1yhjzGRTieVn86h6otfws7tVvHe1+w6+goqP/y+RftpSJgm48snDmL1S+f4vod7nzaW+cSsNHtz0GpQOocJzfJAgRSyBHwH8uIbM7Az3aL8F8LovOc+fLLvc3xM2OUDW4xwBZQ0aGttwvYKAyxC4HQZP4wJMTY+vPNYZv7fMbxxo/JD2dcIVTunavbPFF77IAVTp1Pz4++N7ku6XBT943HsqzdReOMjYZe0aG225Vfwyyp/tomi8jp+XhleqqJQWQxaUkBpB3qvfb9Os8IvaCaV7tJtsyk+BVM6kAYFEK25TY00KO193JK/S7iEK2AWAA8L4RGx3v/3e5crmsDIvv7o7dtOH27qlhsdZeXcI/px/pH9OedwlVFqXyNU5o/C6x7yfS649sHGd+Ytkud7PTice9GzluOtuRs4/4mfdMtq6hvvW0JsFGWzLmOU5lnQ0pIvwgN7p+u+Nwh3rZA/o3grdxziDwXYFZNkuj/Zgbz4ABI1MqnKGjzPrb2Pwy2l0pKEq7PdAnwN5AkhdgC9gDxUPagmo/XUS4i1hRyQvfrtWrYXVuJ2S248ZRi9O5s8OMoCGHG0pFlWutz8kdyF2/ofzsCacn6qqiEmPcQov40wmitqinAxu0Yt+SI88oAsLBbh66vbLT2Jl7VxhkCs5kXt2k+8+ADSbJKGF0iZLbhUii7TTTuce7jZzHOEEAcBY4CewC5giexILi1thNZzJtpmCRnY+O7PG1m0oRCAM8f3MRdQiogjbPkUzjPvdnPx0OMAKIqO5805G7j+vDHN7ltLsSk3OONEU4SLWQ5Jl4nZu7ncfc5IIECrlRKHEHyTkc0TvQ6icFGhb1XIOKgO9Mr7cvF2FlT6z7XcFmx2/WD+Zt9nZ6QKKACvMFoELBJCHA0cDvzaWh3rqNidfhNBlNViOgcF+hFmSz+0itbF2pIxJQGDmIbkrK1GmE4S2vmnBpqmQRkvDycbRVN46KJDgpa5XW5OO/BkNsYHF+DLj47n6oETcAtBhqOOx7f+4VvXkTJJ/L291Pd5fHleUB0sKaWvphm0jwYVrpv5fCHEYd7P/wRmATOFEHe3Zuc6IkXlfo+u299apIsF0bK7pJrf1/ld0NvD/qtoPi3peBnk6eeMjHkQIxNdOC8xh9PNnL9yWLKxyHB9W7wH5/ydayicAGqsNn5O78m8tB4sSuka0LmOo0FpXymjKos4oXSnbn3gb9ke76Bwh3kH4NGeAK4CJgDjgGtboU8dGq3L8Q/LcyirNhZQjoAgOiWg9i0mjvRX0I0LswyFKa6Al2KETNQbyeBwNKiqOgfHTf/WdH1LalDfL9vFpc/+wuXPzWPWr35zVXWdw3QbqTmzoKDdwN9iHyYwRszo99Q6svTPSm79TgUQronPAkghRD9ASCnXAXgr6ypagUCBFPLBV6mOIo7rThzKhwu2AjB6QObe7SzwhV3feMbwvSLM+8moWTgDqcbc5FvSi2/Nzj28+7OnlHl6UgznH9kfgKja8OofBaY96kgmPl3ZE4PJUKvVwvLnzWuBtQXhalC/AS8BTwGfA3iF1b5ViS0CSIoLL2VRz06J9Onid4rY12oK7Q8s31zMIf/4nINu+ZQrX5ivW6dN1bO3L1wZMGof/Mlscs+9HXdV+5bsNsoUHs65NibDWisO6pnZq3wm9b4ffmq6zUZNHFRhdHzADjuQBqU5lcD5p0ghXAF1GVAG/I0n/glgMPB8i/eog1Px0eVccsyARttF2Sy6+lBNeWhde8Kv56NoPtX1DpZuLuKvrSVsyCnTrdMKKOfemoWkpF+tP+v3oOo91P6yhNIn3967/e4lRnpWOAOpxt6FLTkYO/Hgnrrv9Q6PedQ59w+j5gDsjA1hyupAXnxa4T0vrQezO/XZ+3u1hQlLQEkpS6SUd0sp75NSVnmXfSOlfK5VexdhXPDkT2RMeYfU82fw4/KcZu+nU3J4GZubGyRXcv8rTe6TounohFDAS1X724Xy1AwLl0uXhsbmvReqv5lvtkWb0GwNqg1THR3QO53OqXG+7w3CL7q5mlAHsmRoTXwrEztxR//Dqao1n5trD0LVg7pHSvmI97NpuLuUcnprdCwSqaxx+CqG1u+FJ1U40fbQ/CC5yg++ofPz05rcL0XTGTeoM9E2K4cO1hclfHPOet/nwLIGTUW6pS42J1p6773WelmGOaXZ/Dmo0OtbOqWO1tmwYd9RzdSEws2duC9gdJm1cZo1dU5ufO03vly8g7gYG89OPbTJJVX2llAaVA/N554h/hpFCPGWEKJQCLFasyxdCDFHCLHJ+z9Ns+4uIcRmIcQGIcTxTTmh1sRqbZmo6sq8kkbbOF1uyjUu6O2RB0sRmsKyWhZtKOTXNXmsCzDxzVkRXk66sHC5daUQGjSowLmptsZIjt325iI25ZYbrPHTmJNES3usamPSGvZdYw3PPyzWFTCYjDAT2N4Q+DscV7oTm+YdV2t38vbcjZRU1pNTXM20d5a0dRdD1oO6TvN5b8u9z8DjZKHNxz8N+ElK+Zi3Uu804J9CiKHA+cAwoBswVwgxUErZ7r6179w6AafLkyqlufWZTrn7C75ZVdhou9U7Svltrb94sSpYGHloBw2ByWFDJYttMm43xdF+M9VXGdkcW5ZD33YezRuZ+KpqHZx0/3dsev18AE5/+AeKK+pwuSXf3HcC6UmxjSbPaG0NSkrJmoT0oHYJLgfVAfnogtIedaCBovadcueOZVydt5b0pIcN10NkB+oOFUJc49VsrvEKkbCRUv4KlAYsPg1oKIr4DnC6ZvksKWW9lHIbsBlPiqV257e1+XyzdCffLt1JWXXzXH2/WVVguk7rFBH47lEaVOShfYADk8PeePIw3+fQefnCMIkF3AyPZo9m4sjTuTpzVHgdbSp74WYO+lLiizYUsnBdAYs2FFLv8Ca91Zxyl9Q4bj31AN32LZk15T/frWVXcbXvu9stkbX1ulgnAKt0YzUw+wW5mXckJwnNqYQT03bW+D4GrVqXkAJKeHgLWAXcDZwK3AP8LYR4WxgNocKni5QyD8D7v8GI3x1Prr8GcrzLjPp3tRBiqRBiaVGRcVR6S/LQh8u57Ll5XPT0L7py1y2F9oUXCaMXRWi0D3CgueSUMb18n3t12stikyaa0tyErpSbBHq3BWa59LRl27WCuyEAVxd/I4KVkpY08RUE1FsreuJtZE0tCS69M8Cvyz9jeFWw6T2oeGEHeg61zipGcVDad07XtDievGJcm/RLS2Ma1NV4s0ZIKXtLKQ+VUvYCDgWOAK5phT4Z3fWGd4WU8nUp5Wgp5ejMzL0MhvTi3F1Axbtf4iwwuFnd5iPmcBkbrX+h9NJUytWOHANHLyqTROTxyjf+PGWf/bEd8JYz/89HVL7wnm+dcy9Nce4QDjnteV+YDU+1XovaqrkNy7U9FkLozmF4djq9O7dc9ejAgUPFxz8gXW6GV5fQrb7Kt9xhsZhmMdf9eh3JSULzjhEGt5GuaKqzfUq8NDZTeDFws5RSV7NaSvmnEOJW4C7gP808doEQIktKmSeEyAIaJmZy0Dtf9ACCs1K2AlJKcs+9HcfGHcR+/CPdv3pJt15b/TZcT7xAjo2tZ7HdnzV44ROn8tFvW7EIoSvi1qRMEoo2p7i8jl/X5AUtr/7mV0rufRGLxcbTJ51K2oUnhR2cbYZ0uTm+ZAdSCJwIfk4Pyzep1TETUA6vQA0UDg33tD6Dgf77VccPJjMljpYiUH67EL6FWlfzZYmd+SMly3AfLiH8gawR/hw6tuZQPXcRiadOwNa1U8i22lN5qcdwyqJimFZYRS/vAKFmySrfellc1hrdbZTGBNRQwCzYYj7wv7049pfApcBj3v9faJZ/IIR4Bo+TxACgTdxH3CVlODbuAKBu0cqg9Vpb9heLd3DUgd2afIxOFv0ILKe4mqE907AIwSED/VpgUKJGleooopi70jgOrvz1jwGIdzs57evP6Pf2P/b6WBYpeXmTp3BAvbAwbOyFvnUp8eaVaVsbMwu/0zt4CxxUNXzXCo3c0hpmL9rh+96iziUECyi3ED4tSOtqXhoVXAvJt41HjHr2FyF5EI2QLhe7z7gFV24h1V/+QvevXw7dXnNxKm3RvNr9QKYUVfoEVN2arb71lrDqwrQ8jZn4rFLKSqMV3uXhOlnMBP4ABgkhcoQQV+IRTJOEEJuASd7vSCnXAB8Ba4HvgRvazIOvCQ9Hc5+jM+JrGVxdSoLTzox1c7lzxmJOvP87jr/vW1Zp0t8rDSqySU0wf6EBPNj7EM464ETG3TGbRevNHWPC4e0/c5nW91B2xCTq3M3jXc4WLYzYVMyS4NY13Kr1enN2gwk7UGjsLvEP/Fr6fILmcoXwuedHu/2vlV/SemCGrj5UBD+HzpwCXLkeQ1Td4r8bbW9kHtbGQTk163fHJHLHm4uC2rc2jWlQUd7aT2Z3TbgFDy8wWXWsSftHgEfC2XeL0gaaSJyAL1d9g1NYiJZu3jBxVVZzUJHN8OxgN2UtW+JSWJnYCTYUUlHT/Oj81TtKuW72RujcnzUJ6by7bo5vXVQrjdvC9X36701HMe6O2QDYpFv3IpdSUvPpHPrVlLElPhXQOEmEGI23vAYV8BwhkHYH22OSWJPoz9T9u4l5DwI8+SLZi6+J187oleLQxHkFWm3enLOep65sW0eJxgRMIfBWI+s7Dq0soOrsTk4oTKf+wJOptdh4d90cendOIjEuCrdbkpaomYMKuDmyQ1XTVcKrzYmJCl1CQ+pupea/1L7501+jZ11COoeMPs/33dZav3uYz4EunVOAt5vLLXHtqcCqEUZGJr5Arnl5AQdmp3Po4C5N6LA5gYdyC4+AWpcQfiEGbcmNiM5m3sT3l9Gg16FxyGlN78pwCWmik1JmSyn7hPprq462CYEVJUN47Ji52AbvUrL7lBvYknkEO467hhWOaNYlpLM9LpkjDzqLtbv2UFvvotbu4s4Zi33baW+GY0d055gRhp72hv1WtD6xjdR40ubOO/6+71ulDxXWqHZN7hkfYz6+bahnZpVGAsq/rHfnRC6fOFC3rVkRz+YQNJeLwLkzzzuv5OfIMvPMHzrvvkj24muigJpwYDeuzNA7e2nr0EXCNEML1qXuAARHx5o2DfdeqJnzu88eXLdua9B6u8PNr2vy+G1tPos2+BVSXSp85QMRcTSmQQXizGtenN6EEI44DouV7QWGU8RtwtBeafz2+KmG65wuN1iEroyDT0Bp2glEsKddC74IA/fkEoLCGx7Wme1OLt7OW+t/Ntz+0PI84jRzVZGc6qipBqDzjujHo13rOaHE76Ry+1uLGXjNhwy9/iO+KtALr/aIxQy3YOF+QaD6Ll0uRJTxJQr3Zqhb6o+VkY1spL0BtFVFG504VhpUm1MYEAAaSKDXk7u+eVpBY5pae2lQ9X9v5O+lW/gl1tiV2eFyU2KXunmeBsEjgLTEGNxSkhwfpRup33LqARw+tGvg7ppN4ByUROAur8Kd4feYtYaYE/vHrhXEu/0v6ohOFtucKQqp92bcphnwFARER9TaXVz5wnyy0uK574KDibK1vn6jBJSWwJuvBUYM1nR/bZlAswJAbH0tH1u3kTTpUFKOHWt46EYnjpV8anM27G4kIarmt75/22IQp5g0DP3j2RoZnLiL90DPlilsXffXOgpvfMQXamGGM7eQnOOuZnrfw/g+o7dxG5ekNsgg4VnQp2sypTMv9S2/+Gm/9nJwv04kt6DrfJB25n2WtBqUkOZuG9GBThGRPAcVgJSycYcXKbGZOH6UGvj2vDVnA7HRVh66aHQL9LBxlIlPS1DQRCgTX5gTyWn+/HpGkerLC+v4Y1sZc17/juw0f4oY7ajyu2W7+HV1cFCoov1wmd0b3t9YeycNrCkL+34JRJuJO5Ah1aX02rG9SfurnvMHZf/5CHdlddC6vLNva1Q4AZQ+NQNcrpDjIofDgcuh9zJ02vUmoy8WbeeBmct4b95m37LWdjNflZDBzM4DKLf5heAXmX35OyEjcFMAogJ/50j24gskLMuKuYA6NMX4t8hKi2/2/dxUlAalJeBmbImgPBHnj5cJTFDZwDO9PEk/p+SX07VLircr+pvrz01FHHmAiSusMvG1Od0zEkKu1/7WAprtIVrnMM9YEiXd2DduD3tf9s07yZ9yJwCugmIy7rtet95dUWW0WTBes2KW3Z/GyIbEqTnn2h0FOALMmo5afYLl2Yu2M+Onjbpl4TofhUvgo/HvbM/IP8qtf7avHTSBMRX5LEnWmxeD6kZFsAYV5GHockOIAc4bP6xj7u4YPu5sXOE71mTTbQWVVNU6SNzLDCnhoDQoDYY/sAlhP0aafbob2Uho8l0FBRgqIRRRDDEwq0kpudzdmyFjprAs2V/A0CJlswXUDyEqN0e53Ti2hl/ZuWLGbN/nspdmNqs/Wi7J9xdldAY8EbVbc4IEkivgu1ZbevGa8VR9fDlnHdanRSfjtXNQWfV+rdFh0c/tFUXHM327LqMbANcMmkBudLx/f5E8B9UECxDAgjX5fFRhbk51hNh85bbGa9q1BEpAaQmag9r7m1F7QxvNQWnRCqhAT6Yjh5kHEjZWQlvRNrjdkjkkG7z84nQR+i2FTbpxl4XvxWdJCq31NRVriEFT3u1P4SjQV9hxegVUZY2dOX/l8PNKf4rNm177ncRz3ib2zDf5cMGWFuuj9jEaW5FPvMsRlMm8gVgDi8m2uBTKbZqsIRHsxRdsAQrd18YKR9aHWO1oo+ugBJSWIC++vZ+DQnPTB9aWCWTUw/N8XlnaUeQ5h/Vl7KDOZpspE1+EYOYefePAo1iT27zyLKHMKItTulJaEdqbUItFMx8Ke2/CTnA5SHPUGa5zCQsVv+g1Emedx+S3Jb+C46Z/y/ZCY+Haom7mmmdjdmY/DqosYsWfsxhcHVieDmLdxuZUuy7VUSQLqKZpUFefMITnM6voZDe+hxItcHqR8WAhLrptZoeUgNIQpL57v1d9+Qs7Rp6lWxW2xUZbMyiM5g0Ppy7VvfqVIpJDBuhLvIR6sRaWG7/IG+NsTV0pI9bXNOFlHjDv4t4TntA0G2mnuuw8seV3w3VOIYJqKTUIqMbe8a0ZB/VncmfmpXZnvUFF3Vh3sMB+YeN8+tb5r1NjWke7YpBooLrOwW3//YNbXv+d2oAKDEcMy+L8JDvnF+rnARvIrZc8teV3Uh160+yJB/cMPWBuQdSrT4uJDbfgyuk4dzcvq5NsggYF/riWUw7pzebXz2fja+fxzJWHNnKQZnVNsRcs21zEn5v0wbdOl5t0jEfhRZXGFZhlbT05E6di37zTcH3td7+G7IezOnzBJwPnhErKwtxQf4OVuwSV1ii+T+/FG92Mi2tnOOqCvFYHJ3peN4lxNiaONM+M0pLzrYHzWfUWG8/3GGHYNka6sAQ4RRyzZzdJWpNgBGtQQdV+3ZIP5m/m2S9WsXBdPq98u9ZoI6LMrrd3eaCXX3QbxD81oASUlhA23GY/MloniTBcKxqKuiXGRdEvK5kB3VLo1ojHmDLxtT1GFZXtTjcDMBZEzhBFB+tXbqDginsN15Xd+XTIfjhrmiCg6gKyi4db40dzfy3fXMyInakcftBZPNr74CCvN4DjS3bQxVGrE1AHVxTS2zuVM7B7KnMeOplHLxljeLiWLPl+8dHBHmp2E5NErNulzxrBvuXFF5w2w8Xv6zyZ9JdtLubFr1cbbGPuZt5AsIBqWhaVvUEJKC0hvPgEcMfO5f6m4d6oTXCSAH1mgA/mbWbSvd9wzD1f8+aP60NspWhrzEoVmImhxqrq2g3SYAG6VEFGuOrsyDCrnbrr9MIzbLdyzb1+5qM/UisF1dYodscYV75tyMygTSBrQSIDhKlZLj/TGLNmMG5wFwam6j3VNsYbBzYLICZAQAVlmYhgDSpogO2WjB/iT7o74YDgtFnSLbGZnpPn3AOFdHRU24kNFQelIXAOSgbcrEZ5xZqyTxnGvJVWQG0rqGDuCk8Sy3HKSSKiCPz9H7t0DJ2SY3WZr7U4m6kV5JgIAV8/hMBdWYM1LTlkOwg28QVqVKZo7uEdhY0LtQbvPu2AzCbduKv0wcHmAqpl7+cbDkjllt/CM9EnuuyURnkC5m/e5Sla6hACu7Bit1iwtYI3ZothMEVx1fFDuOr4IYbN//HG73yXl8aG7EzD9RvqLEw+8GR2xeorKbw/bzP/OvcgBvdMbYleh0QJKC3B+eV1X7X51czs5PWrN1P26ockHD+exFOP1mlhYWlQ3mPWO1xU1Ppt3yE1NiWg2pzAl6gQEGWzmBbWcHnvg7pla0z36cwrouzlmUQfMIDk808EYH5q6KrNbiFwV1SFJ6ACAmcDNSrTfu0uJKqveUG/QBoGck6Nic8qJa4SfXooMwHV0jF/I9LCDyi9a8dy7MLCCz2G82a3obzQUz9f9XRtCbe1aO9ajqA4Tu/AIrekmnqHC5db0jMz0ZfoeEdRFRscoUXAOgNnEoDf1uYrAdXmNJLN/MKCjVz/+OUkHnEQsSbZrPPOvQ1X0R6qPvqe2NWzdfNY4ThJNNjf3/15I0986i87rwJ1I4vAAUOd3aNtryTeqDkul8S+ZSe7T7jWdJ+FNz9K7TyPa3bM0H64w5hfcmHBXRGctsgIGTAPFiiwzCh58D90nfFwWG3Bkzrokvz1Oi++31K78d3WcqYAOwureH/+Jr5cbJxWqTka1Lpde/j8j+04XW4G90jl3CP6+dY57OGZQAEm7dkFeAoYfugttKgngp9DEyevE+7/zlete8ULZzGiT4Zh86bQVnFQSkBpCXTT1Hjgldhi+SG9J922V9CnW7FpfSZX0R7f5/qVG5o+B+UOjoOCRh7aCH5mOiqBv8d9HyzT2fuD2rvclNz7Ush9NggngNJ/v0HNT4twdTsg5DYNGlT5m59R+dH3pN1yEQknHWnSOEBAhWnic2wPP1tFA4XRcUHLCvZ4UiNtLajg7neDszY00BwB9fI3a3j5G7+X2vEH9cRmFTz84V889kNBk/cXbVKtOEa62VNVT229s3HnpbbGJI5TW1hS64CiHfQeUlHAn8nhF4l0tJGpUzlJaAiKg3K5fXEPO2KTmN53HFO/3cE9/zN/uHT7czj1AqoJbuaBqezboxaLwhwjjfb4+74zbe90uZvkAVbz0yLPcRq5Z1xCUP3j7xRPe5b65evIv/SeEI0D5li9Jj4pJa4QGSnCnqvS9cuCyNLPmzrqHN5uhL4OzSkhsm5Xme576vkzSDznbdbt2mO8QSNEG8REAQwXdXS79D16XfEB81blGrZpN4I0KMmCNXms2OpPS6R1QNG+U471ao5m9KvVm2fv+2DpXnQ0fJSA0hKUuVhS/p8PAai2+pXNxNjwFE9pt+uEXhd7DQ9sW8w/dq0w3aZhMv2KSYN57ip//FOoh9ooeHB3STXXvbKA575YFVZfFU3D6PcINYhwud1NSODoxxkgoASS/ln++SYXgvJXZoW1r6B6Z14TX/5F09g+8GTz7ezGqYHM6JYay7E3nU7SrZf4lmXVV3OC8LjmNzbYqg+VBK6JNDU7+m8pWRxy8Dm82W2Y4frzarKos3vmc05+oHUqJTcbg2TXn/6+Td9Ec+m1r40El5NB1ebCvNqif+eVVduprmvafdEclIDSYlCwsGT6ywB0ttdyatFWDq4opFtNhc9cEQpZ79CNWtOd9VxYsJHrdq9i4bJPgoICQT961NaBCjkHZbDumpcW8J/v1vGP//7BnL+abqJRhMZIQIUKYHS5mpcwNtAsPIZqxgz0ayZOEXxM07klV6CJr576NZup+fH30BMSTez36eP7MvjGc0CTWungykI6uTwaW2PzqfYQMWNmHH+Q3okjOT6K+Bgbz1x5KEkm48l4bwBu786JvLt2DgAfdu7PnqhY4w2APOl3uKipD39uq12QMug+1WlQmt+hq72Gb1Z9bbqrGmvwRSyuaF52lKagBJQGIxNfA4NqyxhXUcCy5M68u6mKu95d4lvnrjXxhrI7gswq4LnoXRy1uA1eLtWrNlF0+5PULv5bZztuavjFN0v9mQm0peQVLYORFhAqIaxHg2rai77SGsXnmX11y+qxEKOJQzEKOnUZOE2UvTqL6q/n65bJOntYDha2rv6quQf0brw4YoN5WvsytErpMXnTuAbVnMS6B/XTV/Y9uH8mw7PTqaixMzzB+Lr/ufQjNi/6H9vfnML4inwALsnf0KTjbi+obBNNIhyC31+ukHPZ2nFCYAXoQCq0CXO9lFSE5wW6NygBBbz3yyZG3fIpB778Fy93P9C3PDBZrM7N3Lsq/7J/sa3fCZS/8UnQfqXdoU8/EvAyya4Nzkaw4dF3qHj3S3JPuQGhueFCBi8ajEjPPDSb2GgrUTYLB0bZKb7rOWp/X2G+D0WTMNKgJoVI39OcOKi86ARyA+Kgqm3RPjdhALsl2JtUBhQjdOzI9VkCtLjr7YgwsgJoNbK7js5utH2U1XOfjx3UmRdP6sP92xZzRvFWnxdhY1NxdkfTNSibVf9s/fJ3Los2FFJcUWca7GykfR5SWcjTm37j6JjwXr59ps6k9xUfUFbV+i/rRjEI1A3WoExCZWTTfa1KKpUG1SaUVdezYmsJW/bUUxCl8T4K+METXQ661VfRy+qkU3Is9X9vpPqb+eBwUnz380H7lQEalIjVj0JOLA12s30tylNWIycmgZ8X+EdzIR9qgwfw07uPo/bTK7F/PpUR0x6k/L+fknvaTWHHvihCY2Smqg+I89HicjfdxBc4/wSwyWnjP9+t831vyLSdGx3PqQeexInDJ3PCC/oEro7NxhPgsq4erI2/AtzV/mzXNW8GD8QCaTB1DuyeytSx3bmoYCOHl+dBgwbVWJmHZsxBRZmcR63dRa9o4/29mTWUDzoPYFeRPvj4tJJtPNY1/JdvSWU9j3z0V/idbS2CUh25g661XoPSJKRGGt5voWgLE59yMwcSYzV2Za2tNUBAnVC6kxNKd5J03glkXjGWPU/PCLlfV1EpIsafZmXnOadyy19VCJeLTo460pzBwmJrnGcC/JuMbD5Z5y8JsDdxUNqaQa6CEiy9Qwd/KhrHSIOqyy0Cgt2rwRuo28QXQGCyVSPqvRqURLDWW7a8rihgftRkN7K6FmFtXIPSxmMdunQxv9n+Ikq6OfuAE4OyDAD8++MVZHdJ4qrjh/DyknzuPeQCHMLClc48/kM4Jr6916AaKK+2c2enet4vDv5dGoJwD91dRp+Adb2TzAv5GVFZGwFmPoNqDEEalM7N3L/cIiWfdeqHGdFuF26bFa311axcSkuiBBSQFKcVUP7PUlNue3liJ77o1BerlIyzJzDl3S/Z8/hbIfdbu3AFcUeN9n2vikvg7/jQN/7UXE8sR+DkeMgEmk2RXc2s7NrSOIv2UP7aR0QPyibpnOPbuztNxuj3CPUTeTSoph2j2tp4BgS78AgYbULPoDkck+So1d8uIPXWi3XL3IBDWIjR7E/W+DWoWOmiq8Pz3cwVG/wvbGmxUOsd9DUoRtrB1qTSneTEJOoyFjRnDur1H9YZLr/w6Z8xGzQ0kFNcTd/4ON152hLjiHc5dO+DUJx3hP7l7nK5WbmtlOF90k2FZ0sT6M0r3W6DOSjNtIHGmiKAe/uONd13nNvJreO6U9k5k2dmezyDjRImtzRKQKEvCldt8X92lfl/gM1xqbzfdRAAjjonx93xVNB+Am8Qd22dblTT2Ih4pKjlogKPWS8w/iW0BhW8btavm/lu2S4cTjfHpHbn6LLdIY/d1pTc8zxVn/8EQFT/XsSOMs4XFqkY/R5OBJeIUt6VwelhnC53+EUuvYQz7jBykgh6wYc4bvW3C3yfK61RnHHASeTEJDKsuoTxFfnclPM30RoT3xtZQymzxWCTbooNgnEbaAjkjIrWzJc1CCjNS9MiJY6AuaDmaFB5pY171RqR5qjj3MP7Yfvpv+w69ELAcz9aU5PIcOSGLaBiAhKoXvDkz3y8cCvHH9SD7x84qVl9azIGqY4CNSjt1/qNOwBPsLFABo2fzivcRIU1ijRHPeW2GObtTOf8kf196zcrAdU2aE182ngnl6ZktVvz61lMJpbLXnhf910GCKiRqTaWPH0STrdk/P99oWt7UGUhs+N3Y/eOXAPHkE2Kro+O4o0f1vPz355AwozEDJ+A0mqF7UmDcAKoeOeLfU5AGf0eK92xVJioSc2ZgwpH5WrQoOal+h009tgDBZT59u5y//zLcz1GsN1rYl6ZlMnKpEzSHXVcnr8e6XAiomzM6jyAHXGN5/1zuty8+/NGbv3Ur9k4vJdMe+kEemeFD+88lkMHh5/RwLefZhoGflj5JfGxN0P/XmS+eDd1C/8i9eYLqVuymk6OLYYmTCNiAlKffbzQk53+h+U5VNU6QlZGbjECB02Gc1D+e8NZXgXJDQIKJpbu4oeM3r71n3fqy5NbFnJyiWeuvOv0E9k93D89sCW/9QWUcpJAr0Fp56BK7n3R91lrcvtmj+DPpODs4qUPv6b7LmvrdZ6AKTFWDhnYmUMHd2HLig91bcut0VDlHwU2SYMKWGfrnO4TTgBr4zUj+jBLM7QpbZTXqyUx+z224XeEOawsj29XfsX3K77gzkO70lQbX6DG3TUtWGOJ85YpD5VxQoQoySyi/Pf7eoMyFJvjUj3795q/6g28Bo2oqXeSHxAraPcJKP3kvEPTv0MGZNIzM3QG95bi6tzVpGvmgZPPP5HOL95N9IDeWFKTGFhj7vQC0F2T6khbIynQktJmVnUDE1/gQKrqN2NnDouU3JLzt26Z3WJlcZJ/sCAdTrI7J2Gzek4op7iaipqmZxlpCkpAofcACixTDR4PqW2aUWOZ02PqaAxZW6+fuNTENYl4/ctmS3wqE+NHcGe/8Z5tA15mTUp1FHijap4Q2QwX3tamIedhYEnqRreTknmrclmzo7Txxi1MOEX1EtwOBtaW0b+ugi5xTTdWBAqod/9xNMdoRrAfZ1XwjxxPQmFr4G+u/R7qDakZ+RvFwvTxljtvqOV0TFl4Qd/FFXVBrvUO6XG4cGrc1r/NyNbVlYo2ScLcGKIZaTrGVpjn6LOmJnFLzkpfMG8gI/qkU1nrP48lG/2xhkII5FdX+/4SNBaar5fs4PM/tvHVkh1Nvt8bxSDVUeB7o/T1T3yevNpBtwCy6yqY99dn3L9tMQAW6fbNH4LnOY2OsjKsVzqDuqdw9mF9Wt05RAko8I0IgKB6Puvi05gw6gzeDhBI4eTVc9fW6bUDzejTEhfDMaV699+NUYns9D6sgU4S9SEES/DcV0BhOrQCqn29jX75O5dD75jNK9okqE4XN7z6G0nnvs3098LP8fXOTxs5+u6vOfCmT1i7s3k515rLCFs9l3QVjPEGeBrxY3ovhoyZQqU1yvPyaOI71BnweMZGW6nT3AcxmtXnFm3WZSZpTsJVi8Em73cZiAQqZnyBdLm4OMxA1q0FlVwxaRDTJvtNt3UONyuGnkHhXc+ZbmfmLt4YzdFSaiw2Or92n+E6S2oSnR21/LRiNrNXfUO/mjLd+puHJlNR43+WXvrGvIyKlqtfXsCZ/57DqQ/9QGkLx04FBeoazUEJgfTOKWrr0wkk0dJNj/pqphRs5J7tf7Jg+Wc8uUUTsuCdHlj27Bms/895fDxtkk6LbA2UgELvoho4ar2t/+GGGR/CEVA4Xbpqp0KjQWU+cycHVxUFbdIQeBnYj1p7CI+pWfokpe5SvWlCO39GO89BHXPP1yzaUMgzvUaxOdajlVY73Lzy7VpcbslDHy5vZA9+Ln/ekxlBSrjuld9apb9GSLuDgx98nOmz3+WJLb+HbOuwWD2Bos3IJBF4DxSU1bJ8S7F//Xx90mJt5VNdtukQJj7tvXOkgSPNrtgk8qLj2fPMO1R98QsxbheZ9hqy6qsZV55Pt3rjAoZzV+ympt7JsRqNb256Tw454DRmJPY23AY8g61A02A4NEdAVVijiRs/0nCdNdUz95TpqOOA6lKG1egHQFG/LtF9DzfBrfZ3aa4wNiVggCHdBnNQCN/F0s79RWmEmwW4PH89XRy1um0brC/WNvJKBOUkAejT0QdGlxdFmcS1hDkc1gY5zs53cvmpr2O1CDJT4uiX3FXX9puVX5HoNSloRzfpwsW1J5o7Ebi9AaLvdB1MfnQ8sW69ENJrUJEzB7U7NpH+dRXUa+r1pCQ0Lf6kgZySMMuXtwDOnAJfWRXzctl+7BYLNXbXXgfqXvrsPF/dKYC0ow6GT/1zjTa3m3rv7Wt3uolrmA4LcVy3Jri4MS/TwmseoBfwx/JPfcsGjr3QtH2/q2Zx79kj9McTFv5O7GSyBXS95D2S4qKo+OjykH0JpKkekmcUbeGwijzTa2NJ1TuCDK0u5ctO/mipSyr1c9ATTcrvBKIVZFrLTYtgkKotKA5KCN+8uNZ70maQFzQQWW+n4Kr7qFuxns7P/pO4ww/a+z43ghJQgGur39QW+JAKE2dfGeYDoa0i6rJakdKT9iavtIY8TbXUE0u2M6i2zPddK1Smbl/BGYde1+ixvszIZmVScPlm/RxU+wqod/4xgdLKegrufZGRlR5toPLnP2F0NtD8UWWbBkpqNBJbGM7gh4w+j7N/3MWLTRZQ+mvRNS2Orfn+4MjFY8ezct7fPi+raOmmIcmRzlU7zESORql/wO8paITWunDjkb156Vd9dpSHPlkZuImOswo380Wnvjg117Sy1kFNnZP4EFUD6h0u7A4XUTYL0TarbpDZGNN2LGVqnte70ES7FPH6hLFDq0PPc1bUOqissZMUH01JRR0DrvmQ8ho7aQnRbPjPeWQke/ZXVu2ft1q1vZSjDmzBoHkDN/PAOSiJ8CUNvm3XCvbYYrBbLHSzN56TseqzudQt9jhS5J5xC/2KFjSyxd6jBBQgN/kfKrOHNJBwNShXkcZVPc48S3LgcbWC0gK4yioRNiuWROOKrQB1FuOfM5I0qEuOGQjAlql+9+NUZz2/L/sEpxCkPnhTs/Zb1YYCStr9LxlrGCNPAJeUusH6isRO/J2QwenFW0k2mYgPdNg5Znh3tuav933/52dries7npNKdrA5LkWXhVsXCxVmFhKze1/ruXfloGNwCoFNSl7ZOI+rd6/m9e6e+cRu3dJY98pYhlz/UVjHA6+buUZIWAUM6pFGUUUtvUO4eN/97hJfwCjA+UeaZ0EIRCtwhYlgC9TIhtSEFlBvzdnAoO4p3HnWSPZU1bPHO79UUlnP7pJqn4DS0px5wlAEBeqaaVDewUtTYyPr/lzt+/xHchc+/XQFq7aX8thlY1ttLkrNQQE2jYtooHOCmRgKaw4KfYVdV4y5+So/Wi94ajXCJs7tZPuAk9h+4BnULTWfjJ2at4Y7dyzjphz9qFU3BxVhbuZfZPThsIPO4rVuw+hmryHtE/OU/4EM6Znq+5zUSIaOlkTanXyVkc09fcbxYPaYoPVnFG3RfY93OUiw+X+EUlsMFw6dxIN9xvBEL3MzidbEd2F2HCkG51hrtbE7ozOnDj9Ft7y+wj+PEzR5bkK1QUkF0Auo31O6sjC1G/PTuvNm1lC+88bNjIh10T0rlcE9U3n/9mNCHqd/TRmHleVxaHkever06XJWrfqMNa+cQ+/O5sKpes4frJz5s25ZU3RTnat8iPm5pPNO8H1Oc9p1DjEfxAW/3P85wzMvFRgo3Vrl0V3llZQ+9TYVM7/1LAiqZ6efg3p20wJOK94GzQiEDtz/iz2G888ZS3hv3mb+3Bg8l95StLsGJYTYDlQCLsAppRwthEgHPgSyge3AuVLKVnPTsmg828JNmBhO+XbQCygZE5yyXku9sLApPpXPOvVjVpeBvuWJTofHkFRVw+5Tb6Rf7i+G259WvA2HsOASFl7s4bf9a13WpWa+x5lfTMV7XxE3fpTpZHFLIj32TV3sze0DDgfgnawh7IhNopcdXvKaShrj2amHcoK3iu2I7ODsDa1F9TfzWZaUyYddBgAwuLqU9ZpUPePL8/g80zOiF1Ly95+z6HLDI1R/4dEaVyR2ot47AJnVZSAPe916Acqs0dRYbXSz1+g0KBuSjGT9/TNxZHdG9skgt98xOJ7Sv7Arcwqhj9fcG+YLMifGOP5I+0J3aD4/02uU7/Ovt4wj+XDPPTtlgifbgCfNUDC371rBJG8F12qLzbefWJeT6KrQpqb6VZvIn3In7kFH6zIYVf22HEgx3U5LnVZAhXje0/91De46O0JA/IlH8Oqdz7EwP4VDK/KxDh8E0fp5p2G9PHFkgZkwGhwjXAG/wxHDssLqrxmlD79GxQxPwH9U724EeUkEaFCpznqipRvp2vtB6rDqUpZ459CXbynm9EOz93qfRrS7gPJytJSyWPN9GvCTlPIxIcQ07/d/ttbBLRX+CfZAs8p1u1fxSPYhQduEk8jT09B/s8oQGtSqxE4MM5lwvn3A4TySPZoFyz8lJoSJ7o7+h+smchvQClN3rT/xZ/Fdz1H99Xz2ANnrv8KakRriRJqOlNJnKnFX1bD7lOv5odJKzdQLKOkyyPeSamBemqfo3D0fzyHxohMaTWSqna9ytrC5JBR7npqBW6M5nVG0lUc1AirL7tdefJPP0p9Joke9/yXcX+O+vDMmkRNHTMYhLLy97ifdYMkm4LJjB/Hwh39RU+/krPF9+OSuSQAcdqc+KwlAcWE5UkrsqzaZFzAMwOyObhBQocScLU4vPKdM6M/Cdfm88u1aeqfFcsuSOdzfZwxjKgo5smw3b3cdTIUtmvHlfq2kzkSD05JzzBUAdNNcw95xAntOGWSEJ6De7DaMY/bkMLayUBebGHROXTvR9b8P+L4fcEB/Ug7z5C7cvnY7jBypa5/gnTML1KAq/94Eg7vo7tEom8VXN6s55F9xL9VfzfN9L3vxfZIvPU3XRrolg3ukUl5aRd3aLSQ1mJKbq0FpOLwsD9tlZ3JQv05MOKD1kk9HioAK5DRggvfzO8A8WlFAiUq/mSFQgzLKOA7hO0locdrML3eGvZaSELnNSqNi+SmtByeV7sRVXok1JdgEYjYfovUIrFuyiuTzTwTQFbCr/mEhyVPMy343Bel2k3/J3dQvX0vmC3eTMHEce555B/uaLVw17mL4div0GUPnADfWBvLueZFuKXEknh7aVKQNDwjXzbelOLVkG0Nr9uASgiEBpbLjNSNUX/Crxs08RuNlqdVO7u0z1qdZXTZkIv/a4Y8JsyLJSo/nhwdO4re1+Vw+0a9hGzkIFBdVUvzPZ6l4+/Owzyna5P6pMwl9AJhSsIEotxtr3LFB6567ajwXTujPgb3Tia+ZzJULllOQ04UTv0hmS1wKsS4nFxRsIt1RR2lULId4A2edBSXYumToBjiBaO+dkzb/zSZvxouQ52ezBAmPUFk2ArGm+wVglUGOvs15FZ5BQUC5kLKv5sO5h7eYi3ndn6t1wglAREcZpDpyMX3rMio++ky3uGEOavKBJ+MUFmzSzcw1P5DoDl+zOqo8l8tvOKLJ3pNNJRIElAR+FEJI4DUp5etAFyllHoCUMk8IEZxXCBBCXA1cDdCrV69mdyC2Vxb87rEpBz6ENpMJ5nCdJLQYxVM1cGrJtqBg4EBuHngUy/PW8foeYwFl5iqq7WvdklWGbbQlOfaW6q/nU/PDQgDyL/g/+hUtoH5lcICn2aS8Q1gouPbBMASUJjygGQUB94bRlUWMrvTY3ksCqo2eeaA/Oagvw4Mmm3mMJgu4VkBpTWxSCJya363hPjx8WFcOH+YPT6iuc7BgTXCwcElZdUjhZElNCvrNk00GY/VepwKXwZT1nLSe/LjyS0RM8As7ymZh/BBvX+OjST7jWBIdDvjiOcCjMa1KyGDmmh9YmJLFySU7sAsLH979Ft8PPZiKWgdf/Euf6d6Skoi7vErnIh3ldgclnDUiyuoXUL6YsSa8YC0aC0OlNdgaUlpZz19bStiwu0y33OG9N7VzUXujPTkLSoIX2mzIACuCY0cuFW99RqU1igprNHaLhWSnnR5OF/e9v1SXQb45vZH19qAady1NJDhJHCalPAg4EbhBCHFkuBtKKV+XUo6WUo7OzAx2rw6XtCn+F4pb6BO+mGklYZv4wtxmiDTWJgBe3OjXdGZkDWFLTrBHUa3FysedBxhur9X2HBu24yoPFkauPeaJH2sX/sXOcVMouP4han5ZQv2azaZtwaRAnsG5m4kUh7DqTKNmvPzNWt9nbdqZtibUy7HGGsXipM7MzanyXYPne/rnBwuj49llMvdTbY2iX2053eurSDUZSibERvlMS1p2LtsYss+W5OBjGqX5Ashw1nnXB/+GRdHx/JrSDdHI/KrvuFFRHLMnhwx7LYdUFOASgn51FVxSsIEMZx1lthguKkzhvXmb+XbpTioDcr1ZkjzeYoExPI4wNKEFj5xEwR2HsGTpRxxY7X3JN0GDEkKQeK7HccLsvXDRMz8z9cVfdcvsXsGh1aDKq+3N9jw1qoIsbNYgDar0wf8A8EbWMI466EwmjTydmV0GsmviVB6cpQ+I1w5ubb3DmxtzbA0v7dXe0O4CSkqZ6/1fCHwOjAEKhBBZAN7/heZ72HuEELzYw85Tm3/j2U0LdC/OOpPkmM0Zr4fSug46uK/putGV+tPPLwoWMCFjVQLTJv21PrhNuXmga+7pN+PYsouqj38k79zbyZlwOfYtO03bE2Y+NTNHE3uYrv4fzPcLyuq69vNOvHbQ0SHXXzjseM6fU+BzVgkcSFwzaILh/fRp5358/fdXzP/rc+7IDhZCtfVOBlw9y/Dc1+SETnRqSQoOVzByEJqzYjbjvKY3swHWztgkXWHOxrjjhonEu51si02mR0Amis6OWoZ4szY4XZJ5q/N06xvyyGn7GiWNNajL8tbRp9Z/HeLiY0nJSCLdWU+U92Vu5mZuRsb91wOe0vA371rJ2eP7cMJBPX3r1+0qC9rG6f1xA83QXyze3ujxnLmF1CxYpvfENBKqNptpvFuM1Gvsgc/XzDU/6LKQ9F76EZaUxhP22tdva7TN3tKuAkoIkSCESGr4DBwHrAa+BC71NrsUCJ4FbmGm9I7l9OJtTC7ZrrsoZm7AZqPNUITSoIalRZMQEA+T4HJgle6gF3lJWUAqGIslZPxW4Muv5MFXg9vUGGtw7irjtDPFd79gejytl14ojGoZAWGNhiOJrWGUn6h3S/Z4/f0nleqF+8b4NKoNYth2xyT6MtFH9Qoe1cbF2Dh6uH6C+rSirbyx/mem7VgWsj9GAsVowJCgmU8zu8dyYhINTXxmDLxiMmtuOogNF/dj1MDg0hqHlfmzY8xdoXfnlt48k1pz6OO9DzYc1MS4XbpzslpFcBxhE+81W2YaIj4WAdy8+2+e/elDzhkQ+vev9MqHQHfzuqI9Bq39uMoq2XnoheSdeStlz7/nW26oQUVZDUfN36T35uuMbACSnHaSnfageMn+tWVBv7w1q3GLlKuw9ZM0t/eboAvwmxBiJbAE+EZK+T3wGDBJCLEJmOT93qoIkwBYS7TxyLDJU/I2q87lM7DmTVR8DD3q9KPJlX/OYv3i9+niqOW0oq2+5XmBucosAkeodDYB6+yrNmHfuF3fRlPWW7e8wlizkrXG7QFECGcQXT9MtNNw5hMAztC4tlqaOBJujLplayi++3nDuTOAJ3uO4tQDT+KMA04Mu6jd9jKPuerRLX8ErUtwO4M0ZfDPUSWcZqylvXrd4WR7Y4Z6xVl4cstCji7b7at6a4a1S0bQsse3/sETmxfqlsVpJs7NBlgfdhmApQkaFEDSqUeTftEpWDsHhweML/drTT//HSCg6jzXMPAlayQ8C6PjdPe+RQhEQoAjUjNumwYzI0D9yg0Mfvs93fpxg/RT5nvcnr45Ahw0Sl75KGSMWvmbn/qyyJf++w3/CkMBZaxBvd5tGJviUwF4d90crspbG2QVqjewvti6mqej8vX/3hcpeeCVRtvtDe0qoKSUW6WUI7x/w6SUj3iXl0gpj5VSDvD+b3VRrb3ptIyINTYdhRuo24CIjtIJqGNHdOOq4wfTo1MCn999HCIuloOrgl9QDUfJrvPPEW0oDBBQbqmLxg/qKwKi9S9R+yb9KF6aCSiT5SEx0qAMnE2MHgwwF1yBPH6Zv0R1S4on6XKx+4RrKX/jE3JOuMawTU5MImsTMliV2ImDDASLEctXea55qks/r9KtvgqB8Tk4hIVOj99m6m1mtVr49v4TeGDKwcwcER32Ax092NikrJ0fA3R5Hc00qIMrCoPur3CJGTk4aNnoyiKivOrA6h17KPAOyKTD6ZublAEX6/rdq3hAE08GMLCmjLfW/8TsVd/wfeVf9OiUsNcaFIAlTa8xdf57NT3S/YJv0Qb9/dCgOQdqUPWFpbgKSyl56D/kXfB/QYNGWW88R2UUfiFsNqSBCqW1RkRJN1UWG7O66E3MRjW+rJlphscOpOylmUH9bknaW4OKGAxTCFmtfDHtWF9dl8WaZ7epThLCZtN5mtmsFl6/8Uh2vX0hpx+ajYiL4brdq0lwel5egSaawZp4mbm7qvU5ttzuoNIMWs4s2gJ2hy5OomaufhTvNjHxyerQI3EjAjWo/CunU/vrsqDHx6z4XY1JyqZAUhOiufjoAVw+cSDnHG4+h9dUpLZciUHMSPSQvrrfv6vd2AwayJKkYHMW+AOpjQTzB10G8kWeJ12OGUN6pjH9goM50MBcZkT00L7EHNDfcF3g5H9RVByfd+rLbylZpnOGT25Z2Gx34/iJ44KXuZ2MrPZ7qv2yymPyk3Xm5SmO37OLCws2snjpxxwRU0+Cy8EP6b24YOjxzOw8kAMSLcREWRGx0b4BlCU5sVlp0K0BDiYCGLVxrXFjYI/0/K6BGpRTWKj+5lfKXnifmrmLyL/iXv1+TUzl0siBKMoWnIsPmFy8nQvzN3BuwSbSHPU8nH2ILogf9M9h1EBPZpCmxETW/r4i7LZNRQkoLyfNKeD4Eady7IjTKLHF0O2rl+m1+ANiDx7maxOlyW4QWFCwUaJtunLLgbEriZOPJstew3d/f8UjW/6gi72G53qMYI/Nc8wxFQVEed2T11c4+fpPT/7ABhOB0QR3jNtJtNvFlfnriDl4KFH9/ZO5le/pUwqZ2ZPdZgIqhJeICHCSqP7Sk/ki0EnEzAHFKMbEiMyUON697WjeumUC/74kOOVQSxFohpFOl06D7l1XybAqA9ffABandKXaYuOjTL1waLiURtfjh4zeXLqogj/WmxfXayDxdH8sUpXFxrzUbjpT9Oed+vJMj5E8F9WdLbGNz5sBHHnQWfxf/8P4X5dBQXOG8S4HP//1Ob1MSm6EQ8yIQdiygzOBj9vjN+01VId21/k1z0BhecXgY7it/+HEup38OO0YXl//MyuSMimOjuP3lK6+SX8hBD2+f42UG86n2+fPN0uwZr5wV9AyI/NsA7uk536uC6jpVm+xUv29v0yMY8N23XrTuVyzmD8DE991uat5YPsS/r1tEV0ctXzSOXhgcoomTVb6XVcBYAk0hYagNb35lIDysqXCyZa4FHbEJeMQFqIH9vamD/ETHR9Ht/oqetRV6UbNnR6/rdH9iyi9iS9QQEVld6PLmw8y5LKT+Xf2aP4x4Ahe6jGcX0YfRvwJh5PisnO2Jsfbp797PWgaBFTAy+N6awmVL5/Ouk1fY0lOJPPJO4ifdKhp/xxbdhm6mpua+EIlIDXJABGoddaYZA4IV0C1GoHnFpi9w6mffD+wqoR318013V2qwzPyL4iO55e0HtzdT/871FhtXDH4GH5MN4/li4tuXKsUUTZizjmB84cex8GHnMfUwcfypMbJ59uM3rzS40CeictmSXGw+WhjXAo7TQTXn8mdKdfEe6U56vht+af0qq8iql9Pw23CQVgsdJ/9PMmXnUbmC3eReM5xALoMEz+t9Aorp7m58dfU7nzZqQ/R0kXs6GEcHOPwVcMdU1GASxM3GDN8IJ3uv4GY4QNpDtH9epJ8mT5rw7jy4Fi0BtbIWFwut65UCsAeW0xIC4UwMZtKo0wQDqfpM1l33in8Mu4IvvI6S5jR9b3HSDzlKCA8JwnfoZWAan2iNF5IbiEQBpnHe2bE8etfnzNvxefMXPujb3n8ceMb3b+IsulGUNEGE52Jpx5Np0duZoDGnPcTSWT971FSrj6Hcws3+ZZ//edOT24vV4MGpf8po48cTVR2N/qsnk3vvz8j5sABRPcLHczsKg72KmqOic/sQQmctzPLvl4dhoCqqXNyzmNzuODJn7j6pV8bbd8UjDQm3XeXKyDbvCTFZR6HpS0E+JHBCLbCFsOvqaHrCXXPMM9iryU2PYnhVSU+L9O3uw4h31vT7BdvKimAq2f+HbTtfX3G6r5bLYJedRUcVpbH1Ny1lGoE1MC6coZ8/SKpN19I1/f3zofJ1r0LmU/eQfIFJxF36EgARlQVE+f1INyaX8n2gspGM/EnOu30/N+jAHS55UIuKtjAO2vn8PjWP4gNw226KWQ+eQdZnz7r+963roIuFuPYvRJsjDdIR7UnKsbUtA4hNCgDTUk6nUGBug1scEVxFdn8Y8ARhutjvZYZreNM4mnH+GLlGgshUAKqDfjhwZP547B4ftr8IwOuOROLN7fYzPmbEZNfR0x+nZSP8nmw9yH8FVBwLZwYEBFlo1xTCyY1RGG+p7YsJNlZT5LTzm14TDvWrE4cUF1KZ6/mVlpZz9LNxb6bMtDzzZngeaGJ6Cidut6gwhvhNtKgTNzMQ2Jiggg0y5gFO5pl1dZS73TxycJtzPp1C58sbOF4DFeggHIGfHcFBHN7vmXY9S+bzvYant/4q66swe8pfnfxHnVVLFn6UVB4QSA3DUlkZN/GvarAkyFi2s5ljC/P4+Ti7by4ab4vXZcl8HoHaN2Bc4K3nHoAc1d8wTvr53J97mrdPZbksBM7ehgZ917b6MCnKcR6kxZHSzejK/1mzV9W5ermAx0GA8gqWzTH/1RMVa2DqN7duHPnXxzmzUBuSTXPjt5cbJoXugCOtOjnCdMcfuvDko1FzF+dx4e3HeVblhedgLva2EIhnU7juSYwDGL3OJAYP0+Z0aFf8w05+rTmTmtqElkfP036vdfS/Ru9p17Wh0+RvfEb33fHjlzzvu4lSkB5GdwzlXHTLuLotR/Tdbrfc+ufM/SeQe9mDWZLnD4pZTgxICI6ylcjBiAt0TzyPruukkXLPmHh8k8ZZvFsI6wWBHCEJkbk++W7fDdroAaVV1rD5c/N46Knf+by5+b5lsccbJ5OycjEp61npSOEic/sZg3UoLLrKpn712yOC4gLmp/avdFAaO2E856qem78TwuWfA8coQaZ+JxBGhTAI9sW+ZZNyd/A78s/5eTSHRxWnmdY+HJ8eR7pznpu3bWC+7ctJtFprIWd2CM87QnAmpKEBXhn3Vye37yASXtyiPEKJqvmN0uMi8KSpn9pD8iIY1TfDHp0SuCDO47hqSvGkXr56YBnnmymJsP+nix9NeiWIlpjLjxUYzb7Yfku3X1VazJ/uXRzMRYhiB1zoG55OIGnTcWaqXeR/7/KLWSle36rsws3B5l93VLSW+Pttzi5C3tqg7VCV/Eedo4+j5J7XzI8rpGJTzpc4A5efnefcTxWHDrLx+Nbfvd8CHg+Yw8aStrNFxIzYhCp/7gES2oSSRecRNzRY7CmJfs1LruD+lWbaA2UgAognElTi/dBl8Dq+HT21DhIm3Zl6I1sVl657nCWP3cmPz9yCocPNX/A448dR7R0E+92+vLRSW8qnyPL/QLqh+U5PkER6CTxzdKdzPhpI+/P28yMnzZi95oXY4aZF3ZzlQZnHzANxgs1B2Uykgt0kng4+xBOGX4K81P1c33rEtJ5sucoQhEYlf/GD8HZMZqLDNKggk18bs2j03A/TNyTw5ObF3JV7hpuyfGb0NKd9RxiC/ZAOzPZM3K9LH89FxRs0kXzv7xhHmcVbubBrYs4PCv8CesGTcHoLu6vyarw66OTsQaUNX85vZzlz5/Frrcv5IKj+iOEIOO+6+nyxgN0fe8xFqf7f6eDxhin1WoJEk71xHwdpRmMfbN0F7WadFZ1ITKnREdZglzBLQnhC/lwsaankHL1Ob7vmXm5bH7tfH57/FQe3rqIITV7uH3nXwBc68xj+vkHcVDPVIZ4q/M6LFZmG5QIKXnkdZy7g50ufCZOo+fL6TQUXJ9n9uXbCvNr1auugsMb4s5CvPsy7r6KPpu+pfMLd/nekXFHjfat1yaebkmUgGoEbeG07NQYjt6TQ05MIh9l9uf5HsM5ffjJDL39K8Q1FxB3zFjT/VhiY+iWkcCofp04eng3Oqeav3TS/u8yYscOJ+W680i+5FTAXyZjfHkewvtCXLyxkKJyj1kpUIMKnJAtKPO0s3ZKM9Wi3GVN0KC021XXUrd0jW/uxiz40Mg1v85q82Xw1jIja0jIXGWByWFbtNxGI3NQOF26IpAWjbA+o3gr/9y53Je/roHpVr0X3oNbF3FU93gSTj4KgSdb+WX567ksbx1nF25mQtluHt/6B1MKNzUpVsfWzTCvMqB3Y4+JsmJJD3g5GhzHkuDJKp94/GH8+dxZJMdHERNl5aKTDgxq21JY0z3CZWBtGX0TPH2qqnXwy3p/RZ4aEwE17ewR2KwWg7ix1kkm3JD6CDy13+KscNjQrti8x7sudzWbF/2PO5bORQiBRbo5TzOX/Glm8JykPcCbr4GGsilGz5estwebptHX7zLi1GKNebyJHo2JpxwFFguxh40iOsTAd2+IhGzmEYHd4cLpkjjdbuJjbL5SDjEal+mXzhrCla+U6iabAYoq6vjPd2u5LESwYlAEewhiDx5G969f1i1rMCekOe2MrCrir6TOuN2Sl77fwGWELlX/44MnkZHkt9knnX8i9cuC4zZcpQZzUJXGc1AN5aWly0XOpKtwbNpB8uWnk/nE7eZzUE14AMZW5FNWXU9inPE1dQY8pO/+Y0LI8gxNohETn3S5g0x81q6dcOUXY8aIqmKWrFzMrM4D6F1XycmlO3CVJ+rmMW7YbZxpvikvjqi+PYKW1QsLv6V0o0ozEIiNtmINnJdpJBvHiD4Z7HzrQuxOF5kp4d/PTcXi1ewEcHKKmxe9Uzuz1xTSIBa/rF9L4aN3ccqD3/u2u++Cg7h/ymiMMHMg2FtElA1rZpqnMKmUuApLsHU3jkdbt2sPf63YocvOsToxg/Xxqbo4R0ucsUnOXVvvidc00JTc1bVBmn9jFRfOKNrCAdWaAWgTs7HEHzOW3qtnYwszqLc5KA3Ky2F3fknCOW+Rct4Mlm/xv2i0sUtRcTGmNVPmrNiNrDZ3KBAmN124JF/kj1U4r9CfJPWVuZuoE1ZTAXX5xIFMGtWDeE3G67gjDjZsa+gkYZLSqMG7r27xKhybPDFZFW/P9qw0mYMKp0TJkWW7+XX5p7y9/md6dDKfN9Ca+AZ0S+HCCQNarDZNsIkv4Dd3uXRxcL2+eJHEsyaG3Ke7rJJ0Zz3X567m5FLP9XKXV4XlYBPqvgrEGpCi5t+9DmbM6HO5ZvDRFMT4s6WceP93PEaW/jcJ4/qlJES3qnACiB7gd7qYlO8Prfh6XYmvBElWlOTkQ3ox+57jSEmIplt6PBdN0JsdE07yeq0JQcIJh7daf7XXvEH7ieqjHyjEjBzMr6vzePirdfyrjz44+fNO+iBzEW98fRsClY3meN1VNUHPXXlAGRitk8wLG+fz5JbfmbhH44HX1OQDMdGtKpxACSgf+tpC/h9SG7sUlZ7CwPpKJuzJYUqBPkfbr6vz2DXQPK5irkhl5vzNbM4t92kfTcESH+vzcDqzaAu9kz0vthE9U3CK4Fx8n0ybiPvLq3jrlglB+4rq28MwNU2gm7mrooo6kyjxBvdYd0DpDill0Avet00YD8BVuWvo5vVUNLtOz87+m/Oe+Mn3XfvbtQgBo+2gOShngJu5EIio0I4yhiVOCkrCcrBxFZc12qYBIQS2nvr5TSO3/e0FlbxQmcDbWUPYGZPI9OwxjMnN4NVv1/LOTxvbvACkFm36o8G//06W1XP9S2qd/J7iObeGdD+njctmz8xL2f7mFPp305ssOz32D1L/cQlZM5/Uaaotjazye2/mnXeHYZvabl2xWS30TvMInwkawfB9Rm8k/vRClljjQYsvk4aJgAoUXG9n6dNIvbH+F84o2sKrG+ZxUoBjEoQ3/97WKAHlRVudVSuUtJ8tsdF8PP1EZg4W/GfaiVR/fIWu3bg1USzoMyRo327gXxXJTHnqZwZc8yGzF21vVh8bTDIW4EpLCScd1IM3ti4g0e0MSpNTa3eZ3nBCCDKmXxe0vG7JKp19W5tBOZAG01+g55+7sto07X9jGeAt0q2vTmsS93Lbm4tYsdWfucG2F9VJjQgaoRoE6roCsmQbBVVqgx2NCkK6ikob16CEIPHM0NpZIDZN5vPJJcYu+A2F+97uOph7+o7jg66D2Om0cv2rv3HVS7+2aG7DphKlySxhAU7I8Q8GZzdoG5o4QiGEYQFAW1YmGXdfRfyx5nPDLYEMcN93bM9FBnjU1dld/Ou9P/l+bSG96qt40htKAp6s9X8nZPgGQkYxmOBPlGs0AJSV1UGmda3XJXiq4D655Xcm7TGo1wYtm9CyhVACyotZdVats8GEu7/m+DmF5N99E0lnTiQ+1sZPD+vLpF/eZTTDx1/Mv/qM9QVIbo1NZqfT80DFRVs5+kC911r4nfSb6c7/fjZPvfo4/PonoFfnrz9pKBcd7Td3SCn5+Let3PbfP3xaScrVZ5N2x2VEH+hv5yraQ+18f5nxshfeN+2Ke08F0unElV9CQVQcL3U/kCVJnXGXlJu6mac665m+bQn3bP+TycXBL87bd63QJVKV9XZq6pzUawKcjbQqm0UgpfQELrcEMlCD8gso6XaDlDqTqs0igoIqbdnd6bXwf/4FBvMG6fddhzDJlt939890eeshesx5IyijSWNoS3McUF3KiCrzubGCmAT+0MRmAZw6pjfWFhb6TSFQ2J/uzeSfaa+hZ30Vd/cZx31047c1+dTWt18dsAYCB3vlb38eJCwynHX89fxZfHTFKD5b9S1pTjuTSv2C4saBR5EnPfeQPdZMQDVoUMH3eaAGVRQVG2Tia5QILHMTeT1qJ7SjcDMTH8DCdQXUaB6KY0Z0574L9DWjatwwq8tArh10NG48gXB31u/gzEOzuejoAaSGiIEKhTZZpgVPMGMDZTb/iy49yb//BWvy6Dt1Fuc+Ppdnv1jFkOs+4ps/dyKEIP2fV9Lz57dIusBfUbjqi58BKLjqvkY6I6mZ8wfO/CLu7zOG53qO5NIhEynKKTJ1kkhyObikYAOX56/XeQ+dMLwrmxf9j2ty1/iWrYtP4+q7PqH7Ze8xTROL5jIod/3X1hK6XPw/Xt9LV3P7hm3kXzmd8v98pF+hFS7ez1qzWVJcdNBLVdisiIQ4RLzxywYg+ZJTPclLDRDRUSROnkDMiEFNPAtIPHuSfz/Ac5sWBLW5f4rxPGRmSizPTjVPidVWaAPKh9bs4b21P7Jg+Wckuhx81GUAb7rSOWLalxSWNyPTSQuTOHmC7nvNT4tw5ui9NmW9na5p8Zw2pBMJ3nlsbeqyKmsU8+I7M+nebzhtp7FLfOFN/8ZVVmnoTu6uqtU9dx8FFMV8fHgYcWDKxBe5aHPjaQWU3eBmiAoYXd5z7kEcOSy4oNzqxAw+z+xLF0ct91w2nk/vPo7Xbwy7on0Qhjm4vByzJ4fp5Ru4f8rBHDvCbyI5uF+mrhz6ht3lnP7ID2zK9cfEJJzon0B2bN7Flm5HUzX750b7k3/J3Th35TPHm0POYbHy/Yrd5sksNWizFhjlmfsjuStv7qinrNrOy9+u1WXzNgpoLSqvCyuhaijypvyT6i9/oeIdfVoabYod6RNQ/j4nxUcFp6XxujpHDzHOsp504clYkxOxJBuXedkb4o8cTZc3HyRqgCczdc/6Ku7Z/qdv/VEHZHHlpEGGTls73pxCz8yWD2ptKqk3T/F9FsC4igJsSC7O38C1u1dhRdIrM5FeEdBXgG6z/QU8A5O+gsZFXKPlHFJZyAPbFnNy8Xae27yA+3scxNwVu1leLVjvreGkxbFlF6X/ft0wIBeXS5fYeVeM/rpc1K/x+6yxVFLtgRJQXmwW4zkouzP4ZRto746yWfjpkZP54I5jgto+0fMgOOv4Js8jGJF268VBy5wIvknvzWO9DmZ2bBemn38QEzQmxPhYGxtfO0/nLu90SV7+xq+t2DQmpLrFf5vO/RhRM3cRk0p3MrS6hKHVJYyPd4cswuY7jkZAxRoIqMvz1/nqLB0yIJPSSq8Hk9NlWqbj09+3UVFjnhOvMZw78wyX6wYGLiMNKirI6aSh6qlRQT7PTj3/Yg8yz+yxNySeejTpd/rnSC/O38CpxdvolWBl2tkj6dEpkRN6619iqRY3cTGREXkibDbijg7OUB8jXYyuLGRiVC3PTj00Yib2Y8ePxNbdPAbNV9spYJB5YcFGnt+8gKPKcjnOa/ITSJYlGe+r4u3Z5k5IXkcchxC64PfJWdEkNWK1EXExRPVsnewge4MSUF7M5qDsjsY1KM/2Fi44qj9Lnz2D6ef7TX6duqWTf/NULLF752YOEDtueNCyKmsUtww8ksUpXfk7JpULnwrWfNKTYrlykt5U9MWiHT5NMapXVqMF5xpG40a8unE+X676li9XfUuX2krD+ZYGcqPjmdl5AG9k+cuYxMZGBZm6BHDXjmX8+tCJLHziNA7M9rzo3XV20+DDmnonr35rXpenuUi7P2BYOl24QVdFNzHWSIPy9NFdYVLHySvEjQr2pU+/du867EVoBL8NyTObf2PtpQM54WBPOqHbJ+mDROsMBmPtidELUwATynKZkVbKmeP7tH2nTBBCEHvoCNP19jWbKbr9SZ8mZcQl+euZ1tXBX0PtXFiwEYCdMYnc1Xccr3Y7wF86xemi0hrFssRMnbOOu9xT9uTB7DEURXvMhBn2Wt4cl2Jc705D13f+3Wib9kAJKC+6OSiNBhBYBROCNSgtB/fP5IELR/Pe7Z50LQkpCRwWIq1RUxBC+DJLNJDqsjNVM3dz3KjgQE2Ae84dRY9OfjV/e2ElHy3wTD5bEuPJuNe4cmwDPX95i5Trzyf6wAGGwaANONZvo/qHhYbrVsenc+RBZ3Fv33FsSPDHT6QkxpDxwI1ED9O/MEdVFTM2UT8HWFcbnDJIyzNfrGrWxLndG8tlhLa8vSdRrODZTQt4pHAlz111KBaLCPLG81U9tZtkw/A6YojoKF0hyc6v3UfqNec2uf9GCIP0PtrK0UcdOYRDKvxm0ckEp7pqT6KHmmcnMM303Y4E5v8LpOLdLyl77WPT9QdXFXFj8Ua6Wz3vnDeyhnLMqDP4uPMAnu41yjevVF9n55Thp3DeASfwaG//XKK7ooriqFg+yfRft0vz1xMTZcMSogBhwqlHE2+grUYCSkB5MYuDMjTxheHhNOWo/kw9bjDFFc0omR6C1JsvDMpKccfOv5i2YxkPb13Epccax2J1y0hg51tT+Nd5/hx3j326wleZN/Xa84gZPcxw28QzJyJioun0wA30/Pktun3+vGn/Kj/8HvuazYbrym3GDgGpiTGkXHEGPee9HbSu7vcVuppUNdXBAuqSqHJ6eoVvYVktb85pmrOElJL8i4OL0DWgq4nlcmFFMrlkO1Oqd3PLqZ6XUtAL02viMzN3ar0ROz16K92/+w99tv9I0pkTTesANZW4QI07OoroA/yT59bUJF5KLqVfTRmd7TXccW2wibo9iTvS2JEDMK051p5ED268qnND8U4z7Ou2IOvtbItN4vHe+vP/V99xLEruwq9FdnZ755hmZHnCWlwI1pc7SHHWs2jZJzy7aQFTc9dwTe4aLMmJWDuZB9SKMGqNtRdKQHkxi4MyElDRUY0/HEII3rjpSHa8NaXRtk0hqnc3std9RZ+t/hQvNiRT89ZyfuGmkDZ5IQS3nnog8d55hlXbS5n1q9+TqOt/HyDtn1eQ9eFT9M35iW5fvEj6v64h4+GbdfuxZmUaRruXWaMpiNIvT7/rKl+9oMCiig2kxJvHAhXd/iTbek+i8pMfqalzMnNZblCbwvwy/u9Mv3nliU9XGppmzXAV7cGxxSQ2BL0GpQuS1Lwkg7z4Gs7VLMWORnCJKBuxo4c1qYppOIiYaLp/8wqWpAREQhwZ914blN5ozFfPsn7WVeR+PJUxk1s3XqipRA/oTepNFxquEwb11Nqb6IHmZvBwcZeUU/v7Cjo56rg8L9hcfcPAo9hdrb+3p/U9lEHjLuLYuBG812UQKS47k0u2M23ncqxI4o8b7wsCNqKxIPP2RAkoL3ovPv9LxdFMDao1scTFYElKIOuz53TLG6qRhiIjOZZbTj3A9/3Cp39myUaPM4KtexfS77ic+GPGImKiiRs/krRbLgpKZyKE8KWj2RWTyICxF9F/3MWMPuQ8nu6lz0JuzeqErasnYHVUZREfr/6OmWt+0NXKCVUbq4GZd73NwFNf4Pbvg+OnDi/P5cpJg3wJeHcVV/POzxt9692V1dT+sdI0Psu5fbfhcvDksZM1ehNfA9qXZNBD3qBBmdXJaZ3UcEHEjjmQPlu/p+/2H0m91th0aMtMw5ocGd5wgWRMv5Z+RQvoMfe/uuXNcb9vbawhzGhNwbF5J0kuB/fsWMZnq77lkjy/RaDcFsODeX6N58TaAp9H6YX5GzjHmwYtZuRgki46hd5/f4YlLibk79sanqQthRJQXozioKSUQW7mFovwaSDtTfwRB5O95TsSz55E4hnH0umxf4S13Z1njtDFSo29fTZPfx5cYTUUUd7RYlFUHFKjtf2e3NWXdin6wAEknnKUb94j2eVgVFUxh1QWMqC2zFewMFRtLPC8y//XdZDPrKHlgoKNTC7eTkxVFbed5p8DmPbOEvL31CCdTnYdcwW5p95I8d0vBG0P/hRPVRYb2uHI61lDGTb2Qib8VsnSTUWevmgFlNbMFGAm8QmvMDQoRePEjBhE5rP/JGbEIJIvP12XmzKSSDxrUuONDNCWrtAyvLqE6Tv+5F+aMIEyt/9dldYljUvz13NSyXZ+TuvBnf0PAyD54sl0fvaf2DTZTJIunmx4jMDSJJGEElBebAZxUC631CUVsFkF/zxrhGmG7fbAmpxIl1en0+X1+8MeBacmxnDPuXpN5463FrFqe+OlNRqI83osVQVUv82PSWDejFfpvepzevz4OpakBCxJ+sn6To/fxseOjWw+OpGnrhjH+CH+7M/a8uHxx3seNgFM27nMV2akgbHl+Ty0bTEJbifFdz/PDScPo3dnzzUoraznuld+o+a3v3Bu95gFK976zPBcpN3JT6k9GDv6HI4fcSrVFhufd+rDE945gJVVMO72z/lu6U5wuZif0o2JI07j5IzR3PPuEk8fAzWoBhOfSdXgkPW0FIYkX3QKPeb+l8wnbm+xebqWptPDN5Hx0I2+Yn5xEw4xdSrK+shTsTbzuWl0CjCjB3Jp/npf2IWWIdkZfJLZn19TutHFXuMXZAbm9Izp15HxwA10efNB3fLWqJXVUigB5cVoDsrpctM5NY60xBgykmKo/2wq/74kMr1dmsr1Jw1leLY+RueK5+c3miT0ry3FfLJwK9aTJwAeN/dA7v7fUkpjExDe1ExazzGApHOPp9fv75F9+0XccuoBuuzYCccdRq8ls8he9yVZ7z1G3/x5pN40hcE1ZZylibwHdGULqj7/iQQrvHmzv6T27EXb+ejv4Ic6EGm3c3v/w6i32NgWl8KbWUN5r6ve/dsl4ZxH5zB7RR6lUbFsj0tmtS2JHUUe197ApK8NbvMpU882PmYrlX9QtC/WTmmkXnsevf/6hB5z/0vWzCfoMuMRUq4Kvg9iDhxA2s0XknzhyR6LRAjPRAFM27E8aPngnqk8tvUPViz9kE/WfO9LtIzBNIQ1NYnU688n0VsQsgHpMK+71t4oAeVFK6AaHCNio20U/O9iSmdeSvEHl2JpYr2USCY22safz5zB+7d7PLfioq1MOaqfab7IH5fn0O+qmRx062ec89hc0q/8iIUXXWiYKXtPVT23vfmHb/5OxESzJTaZjXGp1AmrziXbKNFrVJ/uPq8jYbWSMf06Oj1xG//YtULXLtmlf7Ac23I4dkR3rjnBn7D3jl/zKYrypxsyyuUn6x1UaTwMP+7cn5WJnYLaVdtdPPTjVnZrylake82TgaPkBqGcdP4JPnOo/qBKQHVkRJSNmBGDEDYbMUP60unft9Bnxxzf+vRpU3WedcJiaTRx8EFVRbocljFuJ6O7Gms/jTmRpN7sdT4RgsSTjwrZtj2JjMmUCCBJY7bbm2wE+xLRUVamTOiPEDBmYGf6ZRnbosuq6jn3ibmUV/uvi93p5tLNFgaMOhIqPJrMwO4pbNztiaV5f95m3p+3mTMOzWbymN5cOfI0v1/AmW/xj9MO5Jkm5HxLufwMuj05g0e3/M5d/cYT5XZxavFWXZuanxcTPagPT14+lu+X72JHYRWl9S5uHHAU4yry6V9bznXl1cSk6k2hMiBWKU8jgHrWVfLf9T8zdfAx9M5K4eMrhlPxxWucWbSF/GHDGHaip+S3NUXvHddQvFDYbHR55V5yJk7Vn1CEZEBQtB2W+Fj6FS3AXVOHxSBHY9rNF1L67zdC7uPRLX/Qt7ac9fFpXJG3jk7WoVSecDg13/+mb9iIG37a/11OVP9eRPXtETKusb1RGpQX7UT9nqr6dq2H09ZccFR/U+EEsGRjkU44adlU4Tez3TL5AC4+Wp+k8vM/tnPF8/ODnNbqm+AG3kDG/ddxTtEWFiz/lIXLP2VCmd7lvH6Vp5R2Uny0ztS3LLkzL/cYzj8GHMGlL8wP2m9NnfmAZFRlEf3qKpi96ls+HOAmNUpgRdLNXsOh1hqG9vKPgrVxZNoCeYH1mQAy7m2ZbBGKfQ8j4QSQesMFQcs6PXm77nusdHHT7lW8vOlXDq4qIn7ioWQ+ebtvzquB4JL3AX2IjSH5gpOIGxucnSaSUALKS1qiX70uraon6vT/0v3S91i1vbRZBQb3dRasyaO6zqNZuNxuDujtfxFbLYLMlOCHbFS/Trxy3eEM7pHa6P4HBBSXC4ekc0+g1/KPGfXWdDolBJsW3VX+yrPHjujOXeeM1K2Pcru4ZGRwOW5hd/DcpgVcvXu1bnm028V1uZ5lKS47UVXV5l58QJdX7iVmxCDiJhxC0hR/GRYjL6mo7GaWXFF0WER0FL0Wz9Qts3VO18Ucxh3hT6PW7euXscTFYOvaiV5/fqirPxY9zDwLx76EMvF5mTymN8uePZO0xGhKq+p59+dN5JbWMPymT/jvTUdy5XHBOdM6Kmt2lHLktK8AmHXnsZx3RD9OHN0Lp8vNrqIqendOorSynqPu+oq1uzwu2ikJ0Yzun0mUzcL8Ryfz1pwNrNhWzCcLt/mcTv5x2oH07JRATb2Ta08MLuwYDlE9uxLVsytdZzxCycOvIaKiqFu0EvAXUWzgkYsPod/y5cxYls9vqd04rDyPo7v4ByJSStxuSbTTySkl2zmlZDt37vqLrbHJCCTd6quJ0XjhVbz1mT5oN8DOH9Wne1C8DgRXKo0alN2sc1d0fKL69iDzmTspuu0JbD26EHfkaDo9cjMV739N8qWnkXjq0ZS/9RnR/XrqtB9LXAzdPnmGyg+/J3bcCKJD5M7cl1ACyktmSpzPm+w7Tabv/lnJnH1Y4ylMOgp1didnPzbX912rDdmsFvp09WgDnVJimfvwyUx56id2FVfzyMWH+HIUdk6NY5pXe5m7IodHPvqLPl2SePDC0S3moh93+EH0+P416pavZffxnjyCslKfmFUIwWTKmLDeXx7eXemvfbWtoJJRt3zKvV0cnI6/oGjfOn2VYC2VM7/1778J2Qx6LfuInQd7AmW1WcYVikCSL55M/AmHY0mIwxIfS/JFp+jivtJuNM5OEz0wu8OZjpWAMuD6k4dx5vg+rM8pY2SfDFLCyHTQUYiNtnHnWSO4/tXfsDvdDOyWgpTSMIVSVno8v/zbOPivgYkjezBxZOtNwmpd2F17Kqj64hdsWZ18iTtdJfoEqO5Kj1u4q3gPn83bQkWNg//bBj2SOnOIQZxJ6IOHbyGP6pVF38JfkbX1pnMQCkUDgdlb9leUgDKha1o8XdMiN4CtNbl84iDGDMjk3V828ff2UsYOMq9z095oBZRzZx4FU6eDxUL3H14jul9Pauf/qWvvrqim9rfl7D7jFu4/5Hzwusn3rqts8rFdhcHVfUMhhAhZYVehUOhRAkphyLDe6Tx+WWQlDzXC2iUDa2Y6riJNFgy3m92TrjJs79iWQ8WbnyGAxUs/5qHsQ/iwywBSnKHLeBjhKjU3BSoUir1HefEp9mmEEKT/6+qw25e/PAv7Ok/8VKx08ci2RXyz8iudM0S4WOL2vgilQqEwRwkoxT5P8pSTyXjwhmZvP6i2TPc9evhAOj1xW6MF6NLvMtbSFApFyyA6SozP6NGj5dKlS9u7G4p2xrEzz+ct14CtVxadX7yb/Evu8pXFNiL1pikkXXgKUX17IITAvnE7e55/n9iDhhA9KJvcM27Rte9b+GvI+lsKhSI8hBDLpJRBKd0jeg5KCHEC8DxgBf4rpXyskU0U+zlRvbLoV7QAV0kZ1T8sJG7cCF8ql6yPn2H3KTf4yrBnvnAXJfe/gru0nLTbLyV9mj4dUfTAbLq8fA8QnMMvYfIEJZwUilYmYjUoIYQV2AhMAnKAP4ELpJTBZSZRGpQiPFzllbiK9xDVtydCCFzlHu+9wFx6RlR+/AOF1z8MeIRd/IRDWrWvCsX+wr6oQY0BNksptwIIIWYBpwGGAkqhCAdrSpJOGIUjmBpIOud4TwE4q9VXD0uhULQekSygugO7NN9zgMj3e1Z0aOIOP6jxRgqFokWIZC8+IwO/zh4phLhaCLFUCLG0qKiojbqlUCgUirYgkgVUDtBT870HoKuvIKV8XUo5Wko5OjMzE4VCoVB0HCJZQP0JDBBC9BFCRAPnA1+2c58UCoVC0UZE7ByUlNIphLgR+AGPm/lbUso1jWymUCgUig5CxAooACnlt8C3jTZUKBQKRYcjkk18CoVCodiPUQJKoVAoFBGJElAKhUKhiEiUgFIoFApFRKIElEKhUCgikohNFttUhBBFwI4W2l0noLiF9rU/oK5X01DXq2mo69V09rVr1ltKGZRtocMIqJZECLHUKLOuwhh1vZqGul5NQ12vptNRrpky8SkUCoUiIlECSqFQKBQRiRJQxrze3h3Yx1DXq2mo69U01PVqOh3imqk5KIVCoVBEJEqDUigUCkVEogSUQqFQKCKSiBdQQoieQohfhBDrhBBrhBC3eJenCyHmCCE2ef+naba5SwixWQixQQhxvGb5eUKIv737eSLEMQ8WQqzy7uMFIYTwLj9SCLFcCOEUQpwdYvsYIcSH3u0XCyGyNet6CSF+9J7PWu26liDCrldvIcRP3n3ME0L0MNne8Lp6t18mhFjh7cO1LXGNDI7fpGsmhMjwtq8SQrwUzrUwOKbZNbtMCFHkPecVQoipJtvf5r1//vZe496add8LIcqEEF+31DUKOHZLXq9HhBC7hBBVjRxzb5/JUNcrop7JFrpehu1EiHdTOO3a6pn0IaWM6D8gCzjI+zkJ2AgMBZ4ApnmXTwMe934eCqwEYoA+wBY89aQygJ1AprfdO8CxJsdcAhyKp+z8d8CJ3uXZwHDgXeDsEH2+HviP9/P5wIeadfOASd7PiUB8B75eHwOXej8fA/zPZHvD6wpEAzGaa7Ud6BYB91gCcDhwLfBSONeiCdfsssB9mmx/dMO9A1wXcI8dC0wGvo6QZzLU9Rrn3V9VI8fc22cy1PWaR2Q9ky1xvQzbEeLdFE472uiZ9PWjtXbcah2GL4BJwAYgS3MDbPB+vgu4S9P+B++NfQgwV7P8YuAVk5tpveb7BcBrAW1mNPIw/AAc6v1swxPRLbw35W/7y/UC1gA9vJ8FUNFIX02vK36B2WoPQ7jXTNPuMu0LJJx7J4xrpttnmP0dBSwMWDaBVhJQLXW9AtaZvnBb4pk0u16R+Ezu7fUK1Q6Td5PBdo22a4tnMuJNfFq8auYoYDHQRUqZB+D939nbrDuwS7NZjnfZZmCwECJbCGEDTgd6Ghymu3ebwO2bgq8PUkonUI7nxxwIlAkhPhNC/CWEeFIIYW3ivsMmAq7XSuAs7+czgCQhREYTz6GnEOJvbx8fl1LmNmX7phLmNTMj3HunsXZneU1RnwghjK55IFfi0SranL28XuHSEs+kFu31isRnsjUxezeF3a4tn8l9RkAJIRKBT4FbpZQVoZoaLJNSyj14VXtgAR7V1Bnu9k3rrek+bMARwB14NJS+eEZJLU6EXK87gKOEEH8BRwG7TfZhipRyl5RyONAfuFQI0aUp2zeFJlwz010YLDO6d0K1+wrI9p7zXDymVfMDCnERMBp4sgn9bBFa4HqFfSiDZc2KjzG4XpH4TLYme32PtuUzuU8IKCFEFJ4f9n0p5WfexQVCiCzv+iyg0Ls8B/1IvweQCyCl/EpKOVZKeSge9XqTEMKqmZB+0Lt9D6PtQ/TvkYZ9BPbBq32kAKXe5X9JKbd6RyWzgYOadjUaJ1Kul5QyV0p5ppRyFHCPd1m5wfVqFO8obQ2el0mL08RrZobhtWjiNSuRUtZ7l78BHOw9ftA1E0JMxHNdT9Vs0ya00PUy23drPJNm1ysSn8mm7jvweoXC8N3UhHeYj9Z+JhsOEtF/eCT5u8BzAcufRD/B+IT38zD0k/5bAat3XWfv/zRgBTDQ5Jh/4plkbJiQPSlg/QxCz0HdgH6C8SPvZ6u3bw2OB28DN3TU64Uno7LF+/kR4MFG+q67rnheRHGaPmwEDmzve0yz/jKCJ7FD3jthXLMsTZszgEUm24/C49AywGT9BFrPSaLFrpdmXWOT/nv7TBper0h8Jlviepm1w+TdZLCd2TusTZ5JXz9aa8ct+OMejke1/BvPS3IFcBIee+hPwCbv/3TNNvd4b8YNaLyogJnAWu/f+SGOORpY7d3HS/gzbhyCZ2RRDZQAa0y2j8XjwbYZj/dRX826Sd5zWeV9qKI78PU623u8jcB/8Xr/GGxveF0112ql9//VEXSPbcczoqzy9n1oqGvRhGv2KJ5R6UrgF2CwyfZzgQJNf7/UrFsAFAG13r4dH8HX6wnvd7f3//2t9EyGul6R+Ezu7fUybEeId1PA9obtaKNnsuFPpTpSKBQKRUSyT8xBKRQKhWL/QwkohUKhUEQkSkApFAqFIiJRAkqhUCgUEYkSUAqFQqGISJSAUigiBG926Ant3Q+FIlKwtXcHFIr9hYDSB/FAPeDyfr9GSjms7XulUEQuKg5KoWgHhBDbgalSyrnt3ReFIlJRJj6FIkIQQmz35otDCHG/EOJjIcR7QohK4SnWN1B4iksWeovRHafZNkUI8aYQIk8IsVsI8XBrZuVWKNoCJaAUishlMvA/PDnP/sJTo8eCpxTCg8Brmrbv4MkU3x9P3rnjAMNqvArFvoISUApF5LJASvmD9GTZ/hjIBB6TUjqAWUC2ECLVW+7gRDxlHKqllIXAs3iSfCoU+yzKSUKhiFwKNJ9rgWIppUvzHTxlt7sBUUCeEL4yPhb0hSgVin0OJaAUin2fXXg8Ajt5tS2FokOgTHwKxT6O9JQL/xF4WgiRLISwCCH6CSGOau++KRR7gxJQCkXH4BIgGk/trj3AJ0BWu/ZIodhLVByUQqFQKCISpUEpFAqFIiJRAkqhUCgUEYkSUAqFQqGISJSAUigUCkVEogSUQqFQKCISJaAUCoVCEZEoAaVQKBSKiEQJKIVCoVBEJP8P++CANjpRAPsAAAAASUVORK5CYII=\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "gaugei = 0\n", - "plotstart = \"2009-01-01\"\n", - "plotend = \"2011-12-31\"\n", - "Coello.plotHydrograph(plotstart, plotend, gaugei, Title=\"Lumped Model\")" - ] - }, - { - "cell_type": "markdown", - "id": "6193fb9c", - "metadata": {}, - "source": [ - "### Save Results" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "88e8fae6", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-02-24 00:25:14.873 | DEBUG | catchment:saveResults:1366 - Data is saved successfully\n" - ] - } - ], - "source": [ - "StartDate = \"2009-01-01\"\n", - "EndDate = \"2010-04-20\"\n", - "\n", - "Path = SaveTo + \"Results-Lumped-Model_\" + str(dt.datetime.now())[0:10] + \".txt\"\n", - "Coello.saveResults(Result=5, start=StartDate, end=EndDate, Path=Path)" - ] - } - ], - "metadata": { - "kernelspec": { - "name": "pycharm-e2d4c152", - "language": "python", - "display_name": "PyCharm (pythonProject)" - }, - "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.8.10" - } + "cells": [ + { + "cell_type": "markdown", + "id": "a364d52f-69a7-475b-933d-89650d591a05", + "metadata": {}, + "source": [ + "# Lumped Conceptual Model" + ] + }, + { + "cell_type": "markdown", + "id": "5ec32bfb-e0a3-47c1-9371-b9225ee110e0", + "metadata": {}, + "source": [ + "- please change the directory to the root directory of the repo" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e6b2629f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "'C:\\\\MyComputer\\\\01Algorithms\\\\Hydrology\\\\Hapi'" + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import os\n", + "\n", + "\n", + "os.chdir(\"../../../\")\n", + "os.getcwd()" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### make sure the above path refers to the root directory of the repo\n", + "├── Hapi\n", + "│ ├── Examples\n", + "│ │ ├── data\n", + "│ │ ├── GIS\n", + "│ │ ├── Hydrological model\n", + "│ │ │ ├── data\n", + "│ │ │ ├── Note books\n", + "│ │ │ │ ├── lumped-model-run-coello.ipynb (current file)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "markdown", + "id": "0c51f000", + "metadata": {}, + "source": [ + "### Import Modules" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "efd94b20", + "metadata": {}, + "outputs": [], + "source": [ + "import datetime as dt\n", + "\n", + "import Hapi.rrm.hbv_bergestrom92 as HBVLumped\n", + "import Hapi.sm.performancecriteria as PC\n", + "from Hapi.catchment import Catchment\n", + "from Hapi.rrm.routing import Routing\n", + "from Hapi.run import Run" + ] + }, + { + "cell_type": "markdown", + "id": "883d3c98", + "metadata": {}, + "source": [ + "### Paths" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "78d8611e", + "metadata": {}, + "outputs": [], + "source": [ + "Parameterpath = \"Examples/Hydrological model/data/lumped_model/Coello_Lumped2021-03-08_muskingum.txt\"\n", + "MeteoDataPath = \"Examples/Hydrological model/data/lumped_model/meteo_data-MSWEP.csv\"\n", + "\n", + "Path = \"Examples/Hydrological model/data/lumped_model/\"\n", + "SaveTo = \"Examples/Hydrological model/data/lumped_model/\"" + ] + }, + { + "cell_type": "markdown", + "id": "85e3c2f9", + "metadata": {}, + "source": [ + "### Meteorological data" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5812a7f5", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-20 00:08:44.371 | DEBUG | catchment:readLumpedInputs:720 - Lumped Model inputs are read successfully\n" + ] + } + ], + "source": [ + "start = \"2009-01-01\"\n", + "end = \"2011-12-31\"\n", + "name = \"Coello\"\n", + "Coello = Catchment(name, start, end)\n", + "Coello.readLumpedInputs(MeteoDataPath)" + ] + }, + { + "cell_type": "markdown", + "id": "eca51f8c-de23-4743-9e80-0ea3497a17b5", + "metadata": {}, + "source": [ + "### Lumped model" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "e99e1b85", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-20 00:08:48.044 | DEBUG | catchment:readLumpedModel:678 - Lumped model is read successfully\n" + ] + } + ], + "source": [ + "# catchment area\n", + "AreaCoeff = 1530\n", + "# [Snow pack, Soil moisture, Upper zone, Lower Zone, Water content]\n", + "InitialCond = [0, 10, 10, 10, 0]\n", + "\n", + "Coello.readLumpedModel(HBVLumped, AreaCoeff, InitialCond)" + ] + }, + { + "cell_type": "markdown", + "id": "38e7ae6a-d43a-4fc0-9985-4dd69b5f84e1", + "metadata": {}, + "source": [ + "### Model Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "bb1d0450-e973-44af-88af-f6f8e44c1783", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-20 00:08:50.314 | DEBUG | catchment:readParameters:624 - Parameters are read successfully\n" + ] + } + ], + "source": [ + "Snow = 0 # no snow subroutine\n", + "Coello.readParameters(Parameterpath, Snow)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "256545fe-9c7c-4628-b559-f43a307c5db4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "[0.7,\n 51.1726422,\n 1.147999,\n 0.1,\n 0.88137,\n 0.82353,\n 0.35651,\n 0.03223,\n 47.426,\n 5.2744,\n 1.0,\n 0.2]" + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Coello.Parameters" + ] + }, + { + "cell_type": "markdown", + "id": "602e4629", + "metadata": {}, + "source": [ + "### Observed flow" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "54555e66", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-20 00:08:54.915 | DEBUG | catchment:readDischargeGauges:867 - Gauges data are read successfully\n" + ] + } + ], + "source": [ + "Coello.readDischargeGauges(Path + \"Qout_c.csv\", fmt=\"%Y-%m-%d\")" + ] + }, + { + "cell_type": "markdown", + "id": "60f825cc-49ee-4680-b8cb-901bd11774ec", + "metadata": {}, + "source": [ + "- the discharge data should be stored in the text file with the date stored in the first column and the discharge values in the second column" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "outputs": [ + { + "data": { + "text/plain": " q\n2009-01-01 51.10\n2009-01-02 56.23\n2009-01-03 52.22\n2009-01-04 47.72\n2009-01-05 41.31\n... ...\n2011-12-27 44.02\n2011-12-28 42.35\n2011-12-29 39.76\n2011-12-30 37.68\n2011-12-31 36.64\n\n[1095 rows x 1 columns]", + "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
q
2009-01-0151.10
2009-01-0256.23
2009-01-0352.22
2009-01-0447.72
2009-01-0541.31
......
2011-12-2744.02
2011-12-2842.35
2011-12-2939.76
2011-12-3037.68
2011-12-3136.64
\n

1095 rows × 1 columns

\n
" + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Coello.QGauges" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + } + }, + { + "cell_type": "markdown", + "id": "894ecdc8", + "metadata": {}, + "source": [ + "### Routing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f80b814a", + "metadata": {}, + "outputs": [], + "source": "# RoutingFn = Routing.triangular_routing_2\nRoutingFn = Routing.muskingum_v\nRoute = 1" + }, + { + "cell_type": "markdown", + "id": "560380a3-6dd5-44a5-b9c4-8d65e53d5a5f", + "metadata": {}, + "source": [ + "### Run The Model" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "c4f9c7fc-c087-4fef-be5c-f970e1f13f68", + "metadata": {}, + "outputs": [], + "source": [ + "Run.runLumped(Coello, Route, RoutingFn)" + ] + }, + { + "cell_type": "markdown", + "id": "3b30a30b", + "metadata": {}, + "source": [ + "### Calculate performance criteria" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "7e1a0414", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE= 24.59\n", + "NSE= 0.12\n", + "NSEhf= 0.21\n", + "KGE= 0.56\n", + "WB= 96.59\n" + ] + } + ], + "source": [ + "Metrics = dict()\n", + "\n", + "# gaugeid = Coello.QGauges.columns[-1]\n", + "Qobs = Coello.QGauges['q']\n", + "\n", + "Metrics['RMSE'] = PC.RMSE(Qobs, Coello.Qsim['q'])\n", + "Metrics['NSE'] = PC.NSE(Qobs, Coello.Qsim['q'])\n", + "Metrics['NSEhf'] = PC.NSEHF(Qobs, Coello.Qsim['q'])\n", + "Metrics['KGE'] = PC.KGE(Qobs, Coello.Qsim['q'])\n", + "Metrics['WB'] = PC.WB(Qobs, Coello.Qsim['q'])\n", + "\n", + "print(\"RMSE= \" + str(round(Metrics['RMSE'], 2)))\n", + "print(\"NSE= \" + str(round(Metrics['NSE'], 2)))\n", + "print(\"NSEhf= \" + str(round(Metrics['NSEhf'], 2)))\n", + "print(\"KGE= \" + str(round(Metrics['KGE'], 2)))\n", + "print(\"WB= \" + str(round(Metrics['WB'], 2)))" + ] + }, + { + "cell_type": "markdown", + "id": "da4641e2", + "metadata": {}, + "source": [ + "### Plot Hydrograph" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "17053377", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-03-20 00:10:49.092 | DEBUG | catchment:plotHydrograph:1142 - ----------------------------------\n", + "2022-03-20 00:10:49.092 | DEBUG | catchment:plotHydrograph:1143 - Gauge - q\n" + ] }, - "nbformat": 4, - "nbformat_minor": 5 -} + { + "ename": "AttributeError", + "evalue": "'NoneType' object has no attribute 'loc'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Input \u001b[1;32mIn [19]\u001b[0m, in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 2\u001b[0m plotstart \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m2009-01-01\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 3\u001b[0m plotend \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m2011-12-31\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m----> 4\u001b[0m \u001b[43mCoello\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mPlotHydrograph\u001b[49m\u001b[43m(\u001b[49m\u001b[43mplotstart\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mplotend\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgaugei\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mTitle\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mLumped Model\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mC:\\MyComputer\\01Algorithms\\Hydrology\\Hapi\\Hapi\\catchment.py:1144\u001b[0m, in \u001b[0;36mCatchment.plotHydrograph\u001b[1;34m(self, plotstart, plotend, gaugei, Hapicolor, gaugecolor, linewidth, Hapiorder, Gaugeorder, labelfontsize, XMajorfmt, Noxticks, Title, Xaxis_fmt, label, fmt)\u001b[0m\n\u001b[0;32m 1142\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m----------------------------------\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 1143\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mGauge - \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mstr\u001b[39m(gaugeid))\n\u001b[1;32m-> 1144\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRMSE= \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mround\u001b[39m(\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mMetrics\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mloc\u001b[49m[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRMSE\u001b[39m\u001b[38;5;124m\"\u001b[39m, gaugeid], \u001b[38;5;241m2\u001b[39m)))\n\u001b[0;32m 1145\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNSE= \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mround\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mMetrics\u001b[38;5;241m.\u001b[39mloc[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNSE\u001b[39m\u001b[38;5;124m\"\u001b[39m, gaugeid], \u001b[38;5;241m2\u001b[39m)))\n\u001b[0;32m 1146\u001b[0m logger\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNSEhf= \u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;241m+\u001b[39m \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mround\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mMetrics\u001b[38;5;241m.\u001b[39mloc[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNSEhf\u001b[39m\u001b[38;5;124m\"\u001b[39m, gaugeid], \u001b[38;5;241m2\u001b[39m)))\n", + "\u001b[1;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'loc'" + ] + }, + { + "data": { + "text/plain": "
", + "image/png": "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3ooQghkzZrRPxxQKRRAVM7/FsS0HpKTo9ifbuztBKAGlaHEGDhzIO++84/vudDr5+OOP6devXzv2SqFQBOIq3tPeXQiJElARymWXXca//vUv3/d58+bRo0cP3/fs7GyefPJJhg8fTkJCAldeeSUFBQWceOKJJCUlMXHiRPbs8dx8DWav119/nW7dupGVlcXTTz/t25fb7eaxxx6jX79+ZGRkcO6551JaWupb/7///Y/evXuTkZHBI4880mjfJ0+ezMKFC33H//777xk+fDhdu3bVHfPhhx+md+/edO7cmUsuuYTy8vKwjtlYfxUKRZhEeKKG/VJA3f/BUsTk11vkb/KD37fbeXz66afMmTOHjRs38tVXX3HiiSfy73//m+LiYtxuNy+88IKu/S+//MKmTZv48ccfeeyxx3ymxRdeeIHZs2czf/58cnNzSUtL44YbbgBg7dq1XHfddfzvf/8jNzeXkpIScnJyQvYrNjaWU089lVmzZgHw7rvvcskll+jazJgxgxkzZvDLL7+wdetWqqqquPHGG8M6Zqj+KhSKjsN+KaA6CjfddBNdunShe/fuHHHEEYwdO5ZRo0YRExPDGWecwV9//aVrf99995GQkMCBBx7I5ZdfzsyZMwF47bXXeOSRR+jRowcxMTHcf//9fPLJJzidTj755BNOOeUUjjzySGJiYnjooYewWBq/bS655BLeffddysvLmT9/Pqeffrpu/fvvv89tt91G3759SUxM5NFHH2XWrFlhHTNUfxUKRcehw6c66sh06dLF9zkuLi7oe1VVla59z57+Cia9e/dm1apVAOzYsYMzzjhDJwSsVisFBQXk5ubqtktISCAjI6PRvh1++OEUFRXx8MMPc8oppwQFS+fm5tK7d29df5xOZ1jHDNVfhULRcdgvBdT9U0Zz/5SgvIQRRUJCAjU1Nb7v+fn5e73PXbt2MXjwYAB27txJt27dAI/geuuttzjssMOCtsnKymLdunW+7zU1NZSUlIR1vIsuuogHH3yQX375JWhdt27d2LHDX0Rz586d2Gw2unTp0ugxQ/V3+/btYfVNoVBEPsrEFwE4HA7q6up8f06nk5EjR/Ltt99SWlpKfn4+zz333F4f56GHHqKmpoY1a9bw9ttvc9555wFw7bXXcs899/gERlFREV984SnNdfbZZ/P111/z22+/YbfbmT59Om63O6zj3XzzzcyZM4cjjzwyaN0FF1zAs88+y7Zt26iqquLuu+/mvPPOw2azNXrMUP1VKBQdByWgIoCTTjqJuLg439/999/PxRdfzIgRI8jOzua4447zCZO94aijjqJ///4ce+yx3HHHHRx33HEA3HLLLZx66qkcd9xxJCUlMW7cOBYvXgzAsGHDePnll5kyZQpZWVmkpaXpvAlDkZ6ezrHHHmuYYuiKK67g4osv5sgjj6RPnz7Exsby4osvhnXMUP1VKBQdhw5fD2rdunUMGTKkHXoUOWzfvp0+ffrgcDiw2fZLq64PdT8oFH5Kn3qbPY+/5fver2hBu/TDrB6U0qAUCoVCEZEoAaVQKBSKiGT/tvfsJ2RnZ9NRTLkKhWL/QWlQCoVCsb8S4eNWJaAUCoVCEZEoAaVQKBSKiEQJKIVCoVBEJEpAKRQKhSIiUQJKoVAoFBGJElARwKxZsxg7diwJCQl07tyZsWPH8sorryjXcIVCsV+jBFQ78/TTT3PLLbfwf//3f+Tn51NQUMB//vMfFi5ciN1ub+/uKRQKRbuhBFQ7Ul5ezvTp03nllVc4++yzSUpKQgjBqFGjeP/994mJieGbb75h1KhRJCcn07NnT+6//37f9oFl4METlNtQKbe2tpZLL72UtLQ0hgwZwhNPPKFrn5uby1lnnUVmZiZ9+vQJqsCrUCgU7cl+l0liS+YRbXasxhIv/vHHH9TX13PaaaeZtklISODdd99l2LBhrF69mkmTJjFy5MigCrVGPPDAA2zfvp2tW7dSXV3NSSed5FvndruZPHkyp512GjNnziQnJ4eJEycyaNAgjj/++LDPUaFQKFoLpUG1I8XFxXTq1EmXYXz8+PGkpqYSFxfHr7/+yoQJEzjwwAOxWCwMHz6cCy64gPnz54e1/48++oi7777bV67i5ptv9q37888/KSoqYvr06URHR9O3b1+uuuoqZs2a1eLnqVAoFM1hv9OgIomMjAyKi4txOp0+IfX7778D0KNHD9xuN4sXL2batGmsXr0au91OfX0955xzTlj7Dyydrv28Y8cOcnNzSU1N9S1zuVwccUTbaZgKhaKdiXBHrP1OQLVXvRMjDj30UGJiYvjiiy8466yzDNtMmTKFG2+8ke+++47Y2FhuvfVWiouLgeCy8C6Xi6KiIt/3rKwscnJyGDp0KOAp+d5Az5496dOnD5s2bWqNU1MoFIq9Rpn42pHU1FTuu+8+rr/+ej755BOqqqpwu92sWLGC6upqACorK0lPTyc2NpYlS5bwwQcf+LYfOHAgdXV1fPPNNzgcDh5++GHq6+t9688991weffRR9uzZw+7du3nppZd868aMGUNycjKPP/44tbW1uFwuVq9ezZ9//tl2F0ChUChCoARUO3PnnXfyzDPP8MQTT9C5c2e6dOnCNddcw+OPP8748eN55ZVXmD59OklJSTz44IOce+65vm1TUlJ45ZVXmDp1Kt27dychIUHnpTd9+nR69OhBnz59mDhxImeffTYxMTEAWK1WvvrqK1asWEGfPn3o1KkTU6dOpby8vM2vgUKhUBihSr7vR7z66qvMmjUrbCeLjoi6HxTNQUqJEKK9u9HilD7xFnuefNv3XZV8V7QZeXl5LFy4ELfbzYYNG3j66ac544wz2rtbCsU+RfH0l9g+eDIV//uqvbuy36EEVAfGbrdzzTXXkJSUxDHHHMNpp53G9ddf397dUij2GZy7Cyh/9UPcpeUU3fZEe3dnv6NNvPiEED2Bd4GugBt4XUr5vBDifuAqoMH17G4p5bfebe4CrgRcwM1Syh/aoq8did69e7N69er27oZCsc/iKlFzsu1JW7mZO4HbpZTLhRBJwDIhxBzvumellE9pGwshhgLnA8OAbsBcIcRAKaWrjfqrUCgUinamTUx8Uso8KeVy7+dKYB3QPcQmpwGzpJT1UsptwGZgTHOP73a7m7upogOh7gOFYt+izeeghBDZwChgsXfRjUKIv4UQbwkh0rzLugO7NJvlYCDQhBBXCyGWCiGWagNUtSQkJLB7927sdrsqX7GfIqXEbreze/duEhIS2rs7in2JDui5ty/RppkkhBCJwKfArVLKCiHEq8BDgPT+fxq4AjC6K4Kki5TydeB18LiZGx2zR48eFBcXs2PHDpxOZ8uciGKfw2azkZKSQqdOndq7KwpF5BDhg/Y2E1BCiCg8wul9KeVnAFLKAs36N4CvvV9zgJ6azXsAuc05rsVioXPnznTu3LlZ/VYoFApF+9AmJj7hiXB7E1gnpXxGszxL0+wMoMHl7EvgfCFEjBCiDzAAWNIWfVUoFApFZNBWGtRhwMXAKiHECu+yu4ELhBAj8ZjvtgPXAEgp1wghPgLW4vEAvEF58CkUCsX+RZsIKCnlbxjPK30bYptHgEdarVMKhUKxvxPhTiAqk4RCoVDsr0S4k4QSUAqFQmFGhGsYHR0loBQKhUIRkSgBpVAoFIqIRAkohUKhUEQkSkApFAqFGWoKql1RAkqhUCj2V5QXn0KhUCgUTUcJKIVCoVBEJEpAKRQKhSIiUQJKoVAozOjogboRfn5tWg9KoVAoIh13bT0l01/EXVNP8pST2rs7rUuEO0koAaVQKBQayl58n4oZXwDg2LCtnXuzf6NMfAqFQqGhYsZs3+f6lRvaryMKJaAUCoVCEZkoAaVQKBSKiEQJKIVCodAR2Z5t+xNKQCkUCsX+SmQ78SkBpVAoFIrIRAkohUKhUEQkSkApFAqFIiJRAkqhUCi07E8+EhF+rkpAKRQKxf6KcpJQKBQKhaLpKAGlUCgUYSIjPLlqR0MJKIVCoQgXJaDaFCWgFAqFQkuE10jan1ACSqFQKMJFaVBtihJQCoVCES4dTEBF+pyaElAKhUIRLpH9Pu9wKAGlUCgUiohECSiFQqHQEspJIsJNYh0NJaAUCoUiXDqYgBIR7rGoBJRCoVDspygnCYVCoeggRPoLvaOhBJRCoVCEi5JPbUqbCCghRE8hxC9CiHVCiDVCiFu8y9OFEHOEEJu8/9M029wlhNgshNgghDi+LfqpUCgUykkicmgrDcoJ3C6lHAKMA24QQgwFpgE/SSkHAD95v+Nddz4wDDgBeEUIYW2jvioUiv0ZJYQihjYRUFLKPCnlcu/nSmAd0B04DXjH2+wd4HTv59OAWVLKeinlNmAzMKYt+qpQKBSmKOHVprT5HJQQIhsYBSwGukgp88AjxIDO3mbdgV2azXK8ywL3dbUQYqkQYmlRUVGr9luhUOwn7E8mvgg/nzYVUEKIROBT4FYpZUWopgbLgq6klPJ1KeVoKeXozMzMluqmQqFQKCKANhNQQogoPMLpfSnlZ97FBUKILO/6LKDQuzwH6KnZvAeQ21Z9VSgU+zERHry6P9FWXnwCeBNYJ6V8RrPqS+BS7+dLgS80y88XQsQIIfoAA4AlbdFXhUKxnxPK7BXhJrGOhq2NjnMYcDGwSgixwrvsbuAx4CMhxJXATuAcACnlGiHER8BaPB6AN0gpXW3UV4VCoTBEBeq2Lc0SUEKIowGXlPLXcNpLKX/DeF4J4FiTbR4BHmlO/xQKhaLZ7E9OEhFOWCY+IcR8IcRh3s//BGYBM4UQd7dm5xQKhUKx/xLuHNQBwCLv56uACXgCbq9thT4pFApFuxHSR0IpUG1KuCY+CyCFEP0AIaVcB6BNTaRQKBQdgZBWPGXia1PCFVC/AS8BWcDnAF5hVdxK/VIoFArFfk64Jr7LgDLgb+A+77LBwPMt3yWFQqFoP0Kb+JQG1ZaE1KCEEA8D3wJ/SCl1DhFSym9as2MKhUIRcXQ0ARXh59OYBlUNPA7kCSHeF0JcKITIaIN+KZqIs6CE2oV/Id3u9u6KQrFvo9zMI4aQAkpK+aiU8gg85rwvgeOB1UKI34UQ/xJCHNQWnVSExl1Zzc6xF5B7+s2UPfdee3dHodi32Z+EUISndQprDkpKWSal/FBKeQnQDbgViAJeE0LsFkKc14p9VDRC+eufIKtrASh99I127o1C0XHpcLIrwk+oyZkkpCfXxxLv331CiM5ASkt3TBE+7rr69u6CQtFxUCa+iKFRASWEGAX0w+MsUQ9c5/3+k5TyayllIf4s5AqFQtFxUQKqTQlp4vMmcf0WeAH4FfgnnjLsiXhSHV3R6j1UNE6E25EVCjPsjgjMAa2ep4ihsTmo/wOOAo4GDgLmSSmvk1JeBZwN3NLK/VOEgxrVKfYx/txYiJj8OjFnvsnM+Zvbuzt6VLmNiKExAZUlpdwopdwA1AJ/aNbNAXq3Ws8UCkWHZczts32fpzz1c/t1RBHRNBoH5a2ECzBD6ouhxAEq6CYSUCYJhaLlUE4SEUNjAuonoD+AlPKGgHWn4El9pFAoFB0HJYQihpBefFLKi0Os/hmPAFMoFIoOwZ4X38eZU2DeoKMJrwg/n2aXfJdSFrVkRxQKhaK9KX3wP6EbRPgLvaMRbkXdEUKIn4UQpUIIu/fPIYSwt3YHFQqFQtFKRPj8dbga1EzgU+BmPN58ighCRPhNplB0FDqcAhXhJxSugOoKTA/w4lMoFIr9C/UKbFPCLVj4DjClNTuiUCgUEY8SUG1KuBrUY8AfQoi7AZ2Li5TymBbvlaJpKAufQqHogIQroD4BtgGfo+agIg81qFPsw5xySK/27gIAYc1gKA2qTQlXQI0EMqSUymtPoVC0KDFR1vbugoewBFTrd0PhJ9w5qAXA0NbsiGIvUCY+xT7Mp79va+8uhI/SoNqUcDWobcCPQojPCZ6Dmt7ivVIoFIq2RgmfiCNcARUPfANEAz01y9UvqlAomowQESgP9sc5qAg/nbAElJTy8tbuiEKh2H/ISosnt7QGgCVPn96+nWkgLPkU4W/0Dka4c1AKhULRYlgs/onTLqnx7dgTDWEJnw4moMKYv3a53O0mmJWA6gioVEeKfQzt+y5ibt/9UTtq5JSXby6m95UzOejWz6isaXsn7mZnM1coFIrm8p/rD6em3okEMpJi27s7QLhxUK3fj0jihPu/pai8jt0l1Ux/fynPXjW+TY+vBJRCoWhzThrdi8LyWqSE8ho78bER8CoKy8K3f0moovI63+clm9q+wlLYd4UQYhJwPtBZSjlZCDEaSJZS/txqvVMoFB2SPVX1ZF3yHgBpiTGUzry0nXvEfid8mkp7XJ5w60HdBLwKbAKO9C6uBR5upX4pFIoOjNZJImI84/ZHN/MIJ1wniVuBiVLKxwC3d9l6YFBrdEqhUHRsLBrPCHekvPSVgApJezizhCugkoBd3s8Nv1AUEJZbhxDiLSFEoRBitWbZ/UKI3UKIFd6/kzTr7hJCbBZCbBBCHB9mH/dfIsYNSqEIj7G3f+77XFHjaMeeNJH9Vz5FrokP+BWYFrDsZuCXMLefAZxgsPxZKeVI79+3AEKIoXjmuoZ5t3lFCBEh2SQVCkVLsLOoqr27EMx+rB2Zcd2J/hSsp43t3ebHD1dA3QScIYTYDiQJITYA5wC3hbOxlPJXoDTMY50GzJJS1ksptwGbgTFhbqtQKPYBRARq/eHMhUXMfFmLEfp84mL8uoHN2vZhs2EdUUqZBxwCnIensu6lwFgpZf5eHv9GIcTfXhNgmndZd/zmRIAc7zKFQtFBWPbsmb7PNmuECCs1BxWEdq7Q5XaHaNlKxw+3ofSwWEr5sZRykZRyb3v7KtAPT62pPOBp73Kju9XwrhBCXC2EWCqEWFpU1PY++gqFonn07Zrk+xyJ2pQpHU5Ahb72Vo23ZTvIp7DdzHcJIXYa/G0SQvwihLhJCNGkSDspZYGU0uUVdG/gN+PloM+Y3gPINdnH61LK0VLK0ZmZmU05fMdiX3rAFQr0buZud/u89KXDSc28P3GVVXoXtEs32pnQJ51TUu37XFnb9qmOwtWgXgD2AA8AU4EHgRLgbeBDPA4T/27KgYUQWZqvZwANHn5fAucLIWKEEH2AAcCSpuxboVBENtohVXu5mRf98xnyzrmNnIlXIl0uVVHXgPfnbfZ9/mVVXpsfP1yt5zJgkpTSp8kIIb4DfpRSDhNC/ALMBe402lgIMROYAHQSQuQA9wEThBAj8fzk24FrAKSUa4QQHwFrASdwg5TS1eQzUygUEUtFrd+1vL2sZpX/+woA54486v5YSfTQfo1v1OFMfJFNuAIqCwj0C60Gunk/bwRSzTaWUl5gsPjNEO0fAR4Js28KhWIfo/cVH+i+SylbZS5qR2ElXy7egcUi6JWZyOQxxq7S0hmuBrX/Cqi46LaP9glXQH0FfCGEeATPHFEP4C7vcoBD8WhBCoViP2PNjlLe+XkjZ43vy9hBncPaJvA173ZLrK3gzbd25x5ufv13AI4/qIepgCqpdbJiRS79hYXovfb/6jjYP5+Ky+3GIkS7uJmHK6CuAe4HXsOjNeUCH+OZiwLYCpzc0p1TKBSRz4S7v6a4oo4nP/sb++dTibI1/iILjCdyS2iN8bk2IPiH5TmGbZwIjvtgA1vL7JzW91Ce3rLQfIf7mQYVZbMQ1Y5lAxs9sjeLw2vAfVLKflLKOO//aVLKGgApZb6Ucmdrd1ZhgnLiU7QjxRX+kgwFZTVhbRP4nm/PANi/kjLZWubxUPsis2+79UMRTKMCyuugcBz+JLEKhUJhSLhyJliDah0BNbxPhu+zmfmxwhrdKsdW7D3hmvieBR4QQtwvpWx7Z3iFQrFPELaACvj+5eId/LY2n5smH8CAbikt1h9rGPFWtdbwQzg7Xqqj0Lw/bxOrd+xBCDj/iH46gd8WhPvL3AR0BW4TQhShub+klL1ao2MKhWLfQzYzUOi8J34CYO7K3ax95dwW648+VY9x3+yiCXMs+5mAuuhpfz7wX/7O5Y+nTm/T44croC5q1V4oFIoOQfgmPuPl63aVtVhfIECDMjmoWyPEzijaEnqH+5mAam/CElBSyvmt3RHFXqBSHSkihHBNYNp2j182hn/OaJ1kMX9tLfZ9XrG1xLBNjcX/GkxwNVKbqqMJqCacT/eMhFbsiDFhG1+9WR+OADqh8RuTUk5v+W4pFIp9kXBfd9p2WWnxrdEVAHYVVzfaxqUZ4Nkae2G3U97A9mJEnwxWbvMI9n+dN6rNjx9ustirgYXAMcA/gQOB24H+rdc1xevfr6PHZe/z0Kzl7d0VhSIsmuPFlxgX1Uq9CS8Cw6WZg7I1EqQrXfuXM7O2xIalHSw14c4O3gmcIKU8A6j1/j8b2IdqNe97XPPyAnaXVDP9/aWUVdW3d3cUikYJ38Tn/5yWGOP7PH5IlxbtTzjpkxwaAfXfbsNCa4HtUXOiHdGernY+r60IV0B1llIu8H52CyEsUsrvgMmt1C9FAJW1aiygiEy0buHhxjNpW+3SZHuwWVo2a0E4g353QCN3KL2ro81BAXXCPIeH9ve0tIOACncOKkcIkS2l3I4nMexpQohiQMVEKRQGfLJwKz+vzEUIOGt8H44Z0XGLQk89bhAllfVYhNBpQ6HQalqXPDvP97ml8/GFszdngIByCYHVRBDJDqRBSSm5aLOFnw45j+nb/+SCwk1BbTbllvs+/7Y2nyE904LatCbhCqgngCF4EsI+CHwCROOpA6VoA0IN3ITKdRRxLFybz6vfrQWgf1ZyhxZQd541ssnbmN3PthYepYcz6ndpDEkpznosoR62DuQk8fu6Ar4vs4AF7u07zlBAaWPH3pqzgauOH9KWXQzbzXyG5vN3Qog0IFpKGViCQ9FKhBpZNjc4UtF6aN9j+1RJ83ZmzordLbq/cAZvWg3qqtw12EI9T66OU5ouf094eRPbkyYZfIUQnYUQffGU22j4rNgL/tpSzG3//YNb3/idGXM36NZpR39dUuPaumuKveCbpf7cyZ/+vq0de9I8ZL0dx47cRtvVO1wceOPHjLjpE8be/nl4+w7QUN75x4Rm9DA8whkbNMXNXHYgDSoloWk5CNvjzMPSoIQQJ+ApMNgVvVlX0jpZ8vcbNuaW8+wXqwA49/C+XDZxkG+dNndYKA8aZeKLPLbkVfg+a4NF9wVkvZ2d4y/CuTOPTo/eSsrUs0zbulyS1Tv2ABAbZkG74Ezmze5qo4QnoPzjdGtjtaA60BzU8Gx/Xr00R12Ilu1HuBrUy8BDQKKU0qL5U8JpL9HGFmg9ZgJHmcpMtO9ilqQ0UqmY+S3OnXkAFN/1XMi2WvNynd2lm1Q33UZzbwsBtlYoVOjff+P77lVXyZG9kjiiXxpd7Y2YvTqQF1+0pm6XI4x8hO3xBgrXSSINeE3ub6l8W4ldRVWkJESTHB/NiD7pPHXFOKwWoXfXdTfBvVMJr4jjsCFdWLiuAIDzjujXzr1pGu7SisYbeYmLthEXbaXW7pmbKa1sPF7PYhFsfv18pPSIt6Wbinzrzj+yZa9VOE/GJQUbWJdwAkVOeLfrYMZUFJDhNDmPDqRBxUT59QtHGO797fHyD1eDehO4vDU7sr/w9ZIdZE+dSffL3id/Tw1Wi4UhPVM5oHcag3uk+tppvWfcbkllTQiPfjVuiDgOzE73fR4zMLwy6PsaTpebt+Zs8Akn0GceMEMIQb+sZHJKqtmQU8Znf/jn6Fraiy9cy8MfOVXM21TKn8ldqLeYG4Y60hxUUzWo9sBUgxJCLMAvNAVwixBiGpCvbSelPLL1utfxmPzQDwBU1Tq48+3FHNA7zZco8//OHM4Tl48DggMec0trGBSvCqvtK2g14H1OwQ2zv5//sZ2rXvoVgGNHdOfaE4cwsFtq2Ie55uUFbNytNwnarC37oowKc3/aZs5QL+sO5MW3WTNP6hYWnBE4lx3KxPffRr4r9pLdJdUM6u4362kfpsCBaMgI/X3uDdjx0f5aHfXX0TqCHNy/E2cf1jSnXu38639vOpIB3VLITIltsf4BxMX4taErJ/kdkAJnK6zaueBQz1MH0qCWb9E774Rj5mtrTAWUlPKdtuzI/ojFIrA7/ZIoSqNyBwqkxNjWS6ipaHm0P197pIhpC7TvM7vDhdstwzpXKSVl1XYqNGbrf/z3DwZ0S8Hllix99owW06RMfwfNijlpPdha5p9zcoUYUsjGvPz2IbTvHohMM1+42cxfEEKMD1g2XgjxXKv0aj/BahH8vr7A9/2Bmf6s5do5qKS4KHpmJrZp3xR7x5dLdvg+3/3un+3Yk9YjMyXOp/E89+VqOl/0bljb1da7SL/gHXJL/R5zlbUOlm8pZuW2khb1etQO9HRiR2Oi+LJTH902rlAv6g6kQQ3pmar7bg8x9wbtYwkIV2ReACwNWLYMmNKy3dm/sFoEhWW1huvaO0mjYu/Yo8k+X1yhjzGRTieVn86h6otfws7tVvHe1+w6+goqP/y+RftpSJgm48snDmL1S+f4vod7nzaW+cSsNHtz0GpQOocJzfJAgRSyBHwH8uIbM7Az3aL8F8LovOc+fLLvc3xM2OUDW4xwBZQ0aGttwvYKAyxC4HQZP4wJMTY+vPNYZv7fMbxxo/JD2dcIVTunavbPFF77IAVTp1Pz4++N7ku6XBT943HsqzdReOMjYZe0aG225Vfwyyp/tomi8jp+XhleqqJQWQxaUkBpB3qvfb9Os8IvaCaV7tJtsyk+BVM6kAYFEK25TY00KO193JK/S7iEK2AWAA8L4RGx3v/3e5crmsDIvv7o7dtOH27qlhsdZeXcI/px/pH9OedwlVFqXyNU5o/C6x7yfS649sHGd+Ytkud7PTice9GzluOtuRs4/4mfdMtq6hvvW0JsFGWzLmOU5lnQ0pIvwgN7p+u+Nwh3rZA/o3grdxziDwXYFZNkuj/Zgbz4ABI1MqnKGjzPrb2Pwy2l0pKEq7PdAnwN5AkhdgC9gDxUPagmo/XUS4i1hRyQvfrtWrYXVuJ2S248ZRi9O5s8OMoCGHG0pFlWutz8kdyF2/ofzsCacn6qqiEmPcQov40wmitqinAxu0Yt+SI88oAsLBbh66vbLT2Jl7VxhkCs5kXt2k+8+ADSbJKGF0iZLbhUii7TTTuce7jZzHOEEAcBY4CewC5giexILi1thNZzJtpmCRnY+O7PG1m0oRCAM8f3MRdQiogjbPkUzjPvdnPx0OMAKIqO5805G7j+vDHN7ltLsSk3OONEU4SLWQ5Jl4nZu7ncfc5IIECrlRKHEHyTkc0TvQ6icFGhb1XIOKgO9Mr7cvF2FlT6z7XcFmx2/WD+Zt9nZ6QKKACvMFoELBJCHA0cDvzaWh3rqNidfhNBlNViOgcF+hFmSz+0itbF2pIxJQGDmIbkrK1GmE4S2vmnBpqmQRkvDycbRVN46KJDgpa5XW5OO/BkNsYHF+DLj47n6oETcAtBhqOOx7f+4VvXkTJJ/L291Pd5fHleUB0sKaWvphm0jwYVrpv5fCHEYd7P/wRmATOFEHe3Zuc6IkXlfo+u299apIsF0bK7pJrf1/ld0NvD/qtoPi3peBnk6eeMjHkQIxNdOC8xh9PNnL9yWLKxyHB9W7wH5/ydayicAGqsNn5O78m8tB4sSuka0LmOo0FpXymjKos4oXSnbn3gb9ke76Bwh3kH4NGeAK4CJgDjgGtboU8dGq3L8Q/LcyirNhZQjoAgOiWg9i0mjvRX0I0LswyFKa6Al2KETNQbyeBwNKiqOgfHTf/WdH1LalDfL9vFpc/+wuXPzWPWr35zVXWdw3QbqTmzoKDdwN9iHyYwRszo99Q6svTPSm79TgUQronPAkghRD9ASCnXAXgr6ypagUCBFPLBV6mOIo7rThzKhwu2AjB6QObe7SzwhV3feMbwvSLM+8moWTgDqcbc5FvSi2/Nzj28+7OnlHl6UgznH9kfgKja8OofBaY96kgmPl3ZE4PJUKvVwvLnzWuBtQXhalC/AS8BTwGfA3iF1b5ViS0CSIoLL2VRz06J9Onid4rY12oK7Q8s31zMIf/4nINu+ZQrX5ivW6dN1bO3L1wZMGof/Mlscs+9HXdV+5bsNsoUHs65NibDWisO6pnZq3wm9b4ffmq6zUZNHFRhdHzADjuQBqU5lcD5p0ghXAF1GVAG/I0n/glgMPB8i/eog1Px0eVccsyARttF2Sy6+lBNeWhde8Kv56NoPtX1DpZuLuKvrSVsyCnTrdMKKOfemoWkpF+tP+v3oOo91P6yhNIn3967/e4lRnpWOAOpxt6FLTkYO/Hgnrrv9Q6PedQ59w+j5gDsjA1hyupAXnxa4T0vrQezO/XZ+3u1hQlLQEkpS6SUd0sp75NSVnmXfSOlfK5VexdhXPDkT2RMeYfU82fw4/KcZu+nU3J4GZubGyRXcv8rTe6TounohFDAS1X724Xy1AwLl0uXhsbmvReqv5lvtkWb0GwNqg1THR3QO53OqXG+7w3CL7q5mlAHsmRoTXwrEztxR//Dqao1n5trD0LVg7pHSvmI97NpuLuUcnprdCwSqaxx+CqG1u+FJ1U40fbQ/CC5yg++ofPz05rcL0XTGTeoM9E2K4cO1hclfHPOet/nwLIGTUW6pS42J1p6773WelmGOaXZ/Dmo0OtbOqWO1tmwYd9RzdSEws2duC9gdJm1cZo1dU5ufO03vly8g7gYG89OPbTJJVX2llAaVA/N554h/hpFCPGWEKJQCLFasyxdCDFHCLHJ+z9Ns+4uIcRmIcQGIcTxTTmh1sRqbZmo6sq8kkbbOF1uyjUu6O2RB0sRmsKyWhZtKOTXNXmsCzDxzVkRXk66sHC5daUQGjSowLmptsZIjt325iI25ZYbrPHTmJNES3usamPSGvZdYw3PPyzWFTCYjDAT2N4Q+DscV7oTm+YdV2t38vbcjZRU1pNTXM20d5a0dRdD1oO6TvN5b8u9z8DjZKHNxz8N+ElK+Zi3Uu804J9CiKHA+cAwoBswVwgxUErZ7r6179w6AafLkyqlufWZTrn7C75ZVdhou9U7Svltrb94sSpYGHloBw2ByWFDJYttMm43xdF+M9VXGdkcW5ZD33YezRuZ+KpqHZx0/3dsev18AE5/+AeKK+pwuSXf3HcC6UmxjSbPaG0NSkrJmoT0oHYJLgfVAfnogtIedaCBovadcueOZVydt5b0pIcN10NkB+oOFUJc49VsrvEKkbCRUv4KlAYsPg1oKIr4DnC6ZvksKWW9lHIbsBlPiqV257e1+XyzdCffLt1JWXXzXH2/WVVguk7rFBH47lEaVOShfYADk8PeePIw3+fQefnCMIkF3AyPZo9m4sjTuTpzVHgdbSp74WYO+lLiizYUsnBdAYs2FFLv8Ca91Zxyl9Q4bj31AN32LZk15T/frWVXcbXvu9stkbX1ulgnAKt0YzUw+wW5mXckJwnNqYQT03bW+D4GrVqXkAJKeHgLWAXcDZwK3AP8LYR4WxgNocKni5QyD8D7v8GI3x1Prr8GcrzLjPp3tRBiqRBiaVGRcVR6S/LQh8u57Ll5XPT0L7py1y2F9oUXCaMXRWi0D3CgueSUMb18n3t12stikyaa0tyErpSbBHq3BWa59LRl27WCuyEAVxd/I4KVkpY08RUE1FsreuJtZE0tCS69M8Cvyz9jeFWw6T2oeGEHeg61zipGcVDad07XtDievGJcm/RLS2Ma1NV4s0ZIKXtLKQ+VUvYCDgWOAK5phT4Z3fWGd4WU8nUp5Wgp5ejMzL0MhvTi3F1Axbtf4iwwuFnd5iPmcBkbrX+h9NJUytWOHANHLyqTROTxyjf+PGWf/bEd8JYz/89HVL7wnm+dcy9Nce4QDjnteV+YDU+1XovaqrkNy7U9FkLozmF4djq9O7dc9ejAgUPFxz8gXW6GV5fQrb7Kt9xhsZhmMdf9eh3JSULzjhEGt5GuaKqzfUq8NDZTeDFws5RSV7NaSvmnEOJW4C7gP808doEQIktKmSeEyAIaJmZy0Dtf9ACCs1K2AlJKcs+9HcfGHcR+/CPdv3pJt15b/TZcT7xAjo2tZ7HdnzV44ROn8tFvW7EIoSvi1qRMEoo2p7i8jl/X5AUtr/7mV0rufRGLxcbTJ51K2oUnhR2cbYZ0uTm+ZAdSCJwIfk4Pyzep1TETUA6vQA0UDg33tD6Dgf77VccPJjMljpYiUH67EL6FWlfzZYmd+SMly3AfLiH8gawR/hw6tuZQPXcRiadOwNa1U8i22lN5qcdwyqJimFZYRS/vAKFmySrfellc1hrdbZTGBNRQwCzYYj7wv7049pfApcBj3v9faJZ/IIR4Bo+TxACgTdxH3CVlODbuAKBu0cqg9Vpb9heLd3DUgd2afIxOFv0ILKe4mqE907AIwSED/VpgUKJGleooopi70jgOrvz1jwGIdzs57evP6Pf2P/b6WBYpeXmTp3BAvbAwbOyFvnUp8eaVaVsbMwu/0zt4CxxUNXzXCo3c0hpmL9rh+96iziUECyi3ED4tSOtqXhoVXAvJt41HjHr2FyF5EI2QLhe7z7gFV24h1V/+QvevXw7dXnNxKm3RvNr9QKYUVfoEVN2arb71lrDqwrQ8jZn4rFLKSqMV3uXhOlnMBP4ABgkhcoQQV+IRTJOEEJuASd7vSCnXAB8Ba4HvgRvazIOvCQ9Hc5+jM+JrGVxdSoLTzox1c7lzxmJOvP87jr/vW1Zp0t8rDSqySU0wf6EBPNj7EM464ETG3TGbRevNHWPC4e0/c5nW91B2xCTq3M3jXc4WLYzYVMyS4NY13Kr1enN2gwk7UGjsLvEP/Fr6fILmcoXwuedHu/2vlV/SemCGrj5UBD+HzpwCXLkeQ1Td4r8bbW9kHtbGQTk163fHJHLHm4uC2rc2jWlQUd7aT2Z3TbgFDy8wWXWsSftHgEfC2XeL0gaaSJyAL1d9g1NYiJZu3jBxVVZzUJHN8OxgN2UtW+JSWJnYCTYUUlHT/Oj81TtKuW72RujcnzUJ6by7bo5vXVQrjdvC9X36701HMe6O2QDYpFv3IpdSUvPpHPrVlLElPhXQOEmEGI23vAYV8BwhkHYH22OSWJPoz9T9u4l5DwI8+SLZi6+J187oleLQxHkFWm3enLOep65sW0eJxgRMIfBWI+s7Dq0soOrsTk4oTKf+wJOptdh4d90cendOIjEuCrdbkpaomYMKuDmyQ1XTVcKrzYmJCl1CQ+pupea/1L7501+jZ11COoeMPs/33dZav3uYz4EunVOAt5vLLXHtqcCqEUZGJr5Arnl5AQdmp3Po4C5N6LA5gYdyC4+AWpcQfiEGbcmNiM5m3sT3l9Gg16FxyGlN78pwCWmik1JmSyn7hPprq462CYEVJUN47Ji52AbvUrL7lBvYknkEO467hhWOaNYlpLM9LpkjDzqLtbv2UFvvotbu4s4Zi33baW+GY0d055gRhp72hv1WtD6xjdR40ubOO/6+71ulDxXWqHZN7hkfYz6+bahnZpVGAsq/rHfnRC6fOFC3rVkRz+YQNJeLwLkzzzuv5OfIMvPMHzrvvkj24muigJpwYDeuzNA7e2nr0EXCNEML1qXuAARHx5o2DfdeqJnzu88eXLdua9B6u8PNr2vy+G1tPos2+BVSXSp85QMRcTSmQQXizGtenN6EEI44DouV7QWGU8RtwtBeafz2+KmG65wuN1iEroyDT0Bp2glEsKddC74IA/fkEoLCGx7Wme1OLt7OW+t/Ntz+0PI84jRzVZGc6qipBqDzjujHo13rOaHE76Ry+1uLGXjNhwy9/iO+KtALr/aIxQy3YOF+QaD6Ll0uRJTxJQr3Zqhb6o+VkY1spL0BtFVFG504VhpUm1MYEAAaSKDXk7u+eVpBY5pae2lQ9X9v5O+lW/gl1tiV2eFyU2KXunmeBsEjgLTEGNxSkhwfpRup33LqARw+tGvg7ppN4ByUROAur8Kd4feYtYaYE/vHrhXEu/0v6ohOFtucKQqp92bcphnwFARER9TaXVz5wnyy0uK574KDibK1vn6jBJSWwJuvBUYM1nR/bZlAswJAbH0tH1u3kTTpUFKOHWt46EYnjpV8anM27G4kIarmt75/22IQp5g0DP3j2RoZnLiL90DPlilsXffXOgpvfMQXamGGM7eQnOOuZnrfw/g+o7dxG5ekNsgg4VnQp2sypTMv9S2/+Gm/9nJwv04kt6DrfJB25n2WtBqUkOZuG9GBThGRPAcVgJSycYcXKbGZOH6UGvj2vDVnA7HRVh66aHQL9LBxlIlPS1DQRCgTX5gTyWn+/HpGkerLC+v4Y1sZc17/juw0f4oY7ajyu2W7+HV1cFCoov1wmd0b3t9YeycNrCkL+34JRJuJO5Ah1aX02rG9SfurnvMHZf/5CHdlddC6vLNva1Q4AZQ+NQNcrpDjIofDgcuh9zJ02vUmoy8WbeeBmct4b95m37LWdjNflZDBzM4DKLf5heAXmX35OyEjcFMAogJ/50j24gskLMuKuYA6NMX4t8hKi2/2/dxUlAalJeBmbImgPBHnj5cJTFDZwDO9PEk/p+SX07VLircr+pvrz01FHHmAiSusMvG1Od0zEkKu1/7WAprtIVrnMM9YEiXd2DduD3tf9s07yZ9yJwCugmIy7rtet95dUWW0WTBes2KW3Z/GyIbEqTnn2h0FOALMmo5afYLl2Yu2M+Onjbpl4TofhUvgo/HvbM/IP8qtf7avHTSBMRX5LEnWmxeD6kZFsAYV5GHockOIAc4bP6xj7u4YPu5sXOE71mTTbQWVVNU6SNzLDCnhoDQoDYY/sAlhP0aafbob2Uho8l0FBRgqIRRRDDEwq0kpudzdmyFjprAs2V/A0CJlswXUDyEqN0e53Ti2hl/ZuWLGbN/nspdmNqs/Wi7J9xdldAY8EbVbc4IEkivgu1ZbevGa8VR9fDlnHdanRSfjtXNQWfV+rdFh0c/tFUXHM327LqMbANcMmkBudLx/f5E8B9UECxDAgjX5fFRhbk51hNh85bbGa9q1BEpAaQmag9r7m1F7QxvNQWnRCqhAT6Yjh5kHEjZWQlvRNrjdkjkkG7z84nQR+i2FTbpxl4XvxWdJCq31NRVriEFT3u1P4SjQV9hxegVUZY2dOX/l8PNKf4rNm177ncRz3ib2zDf5cMGWFuuj9jEaW5FPvMsRlMm8gVgDi8m2uBTKbZqsIRHsxRdsAQrd18YKR9aHWO1oo+ugBJSWIC++vZ+DQnPTB9aWCWTUw/N8XlnaUeQ5h/Vl7KDOZpspE1+EYOYefePAo1iT27zyLKHMKItTulJaEdqbUItFMx8Ke2/CTnA5SHPUGa5zCQsVv+g1Emedx+S3Jb+C46Z/y/ZCY+Haom7mmmdjdmY/DqosYsWfsxhcHVieDmLdxuZUuy7VUSQLqKZpUFefMITnM6voZDe+hxItcHqR8WAhLrptZoeUgNIQpL57v1d9+Qs7Rp6lWxW2xUZbMyiM5g0Ppy7VvfqVIpJDBuhLvIR6sRaWG7/IG+NsTV0pI9bXNOFlHjDv4t4TntA0G2mnuuw8seV3w3VOIYJqKTUIqMbe8a0ZB/VncmfmpXZnvUFF3Vh3sMB+YeN8+tb5r1NjWke7YpBooLrOwW3//YNbXv+d2oAKDEcMy+L8JDvnF+rnARvIrZc8teV3Uh160+yJB/cMPWBuQdSrT4uJDbfgyuk4dzcvq5NsggYF/riWUw7pzebXz2fja+fxzJWHNnKQZnVNsRcs21zEn5v0wbdOl5t0jEfhRZXGFZhlbT05E6di37zTcH3td7+G7IezOnzBJwPnhErKwtxQf4OVuwSV1ii+T+/FG92Mi2tnOOqCvFYHJ3peN4lxNiaONM+M0pLzrYHzWfUWG8/3GGHYNka6sAQ4RRyzZzdJWpNgBGtQQdV+3ZIP5m/m2S9WsXBdPq98u9ZoI6LMrrd3eaCXX3QbxD81oASUlhA23GY/MloniTBcKxqKuiXGRdEvK5kB3VLo1ojHmDLxtT1GFZXtTjcDMBZEzhBFB+tXbqDginsN15Xd+XTIfjhrmiCg6gKyi4db40dzfy3fXMyInakcftBZPNr74CCvN4DjS3bQxVGrE1AHVxTS2zuVM7B7KnMeOplHLxljeLiWLPl+8dHBHmp2E5NErNulzxrBvuXFF5w2w8Xv6zyZ9JdtLubFr1cbbGPuZt5AsIBqWhaVvUEJKC0hvPgEcMfO5f6m4d6oTXCSAH1mgA/mbWbSvd9wzD1f8+aP60NspWhrzEoVmImhxqrq2g3SYAG6VEFGuOrsyDCrnbrr9MIzbLdyzb1+5qM/UisF1dYodscYV75tyMygTSBrQSIDhKlZLj/TGLNmMG5wFwam6j3VNsYbBzYLICZAQAVlmYhgDSpogO2WjB/iT7o74YDgtFnSLbGZnpPn3AOFdHRU24kNFQelIXAOSgbcrEZ5xZqyTxnGvJVWQG0rqGDuCk8Sy3HKSSKiCPz9H7t0DJ2SY3WZr7U4m6kV5JgIAV8/hMBdWYM1LTlkOwg28QVqVKZo7uEdhY0LtQbvPu2AzCbduKv0wcHmAqpl7+cbDkjllt/CM9EnuuyURnkC5m/e5Sla6hACu7Bit1iwtYI3ZothMEVx1fFDuOr4IYbN//HG73yXl8aG7EzD9RvqLEw+8GR2xeorKbw/bzP/OvcgBvdMbYleh0QJKC3B+eV1X7X51czs5PWrN1P26ockHD+exFOP1mlhYWlQ3mPWO1xU1Ppt3yE1NiWg2pzAl6gQEGWzmBbWcHnvg7pla0z36cwrouzlmUQfMIDk808EYH5q6KrNbiFwV1SFJ6ACAmcDNSrTfu0uJKqveUG/QBoGck6Nic8qJa4SfXooMwHV0jF/I9LCDyi9a8dy7MLCCz2G82a3obzQUz9f9XRtCbe1aO9ajqA4Tu/AIrekmnqHC5db0jMz0ZfoeEdRFRscoUXAOgNnEoDf1uYrAdXmNJLN/MKCjVz/+OUkHnEQsSbZrPPOvQ1X0R6qPvqe2NWzdfNY4ThJNNjf3/15I0986i87rwJ1I4vAAUOd3aNtryTeqDkul8S+ZSe7T7jWdJ+FNz9K7TyPa3bM0H64w5hfcmHBXRGctsgIGTAPFiiwzCh58D90nfFwWG3Bkzrokvz1Oi++31K78d3WcqYAOwureH/+Jr5cbJxWqTka1Lpde/j8j+04XW4G90jl3CP6+dY57OGZQAEm7dkFeAoYfugttKgngp9DEyevE+7/zlete8ULZzGiT4Zh86bQVnFQSkBpCXTT1Hjgldhi+SG9J922V9CnW7FpfSZX0R7f5/qVG5o+B+UOjoOCRh7aCH5mOiqBv8d9HyzT2fuD2rvclNz7Ush9NggngNJ/v0HNT4twdTsg5DYNGlT5m59R+dH3pN1yEQknHWnSOEBAhWnic2wPP1tFA4XRcUHLCvZ4UiNtLajg7neDszY00BwB9fI3a3j5G7+X2vEH9cRmFTz84V889kNBk/cXbVKtOEa62VNVT229s3HnpbbGJI5TW1hS64CiHfQeUlHAn8nhF4l0tJGpUzlJaAiKg3K5fXEPO2KTmN53HFO/3cE9/zN/uHT7czj1AqoJbuaBqezboxaLwhwjjfb4+74zbe90uZvkAVbz0yLPcRq5Z1xCUP3j7xRPe5b65evIv/SeEI0D5li9Jj4pJa4QGSnCnqvS9cuCyNLPmzrqHN5uhL4OzSkhsm5Xme576vkzSDznbdbt2mO8QSNEG8REAQwXdXS79D16XfEB81blGrZpN4I0KMmCNXms2OpPS6R1QNG+U471ao5m9KvVm2fv+2DpXnQ0fJSA0hKUuVhS/p8PAai2+pXNxNjwFE9pt+uEXhd7DQ9sW8w/dq0w3aZhMv2KSYN57ip//FOoh9ooeHB3STXXvbKA575YFVZfFU3D6PcINYhwud1NSODoxxkgoASS/ln++SYXgvJXZoW1r6B6Z14TX/5F09g+8GTz7ezGqYHM6JYay7E3nU7SrZf4lmXVV3OC8LjmNzbYqg+VBK6JNDU7+m8pWRxy8Dm82W2Y4frzarKos3vmc05+oHUqJTcbg2TXn/6+Td9Ec+m1r40El5NB1ebCvNqif+eVVduprmvafdEclIDSYlCwsGT6ywB0ttdyatFWDq4opFtNhc9cEQpZ79CNWtOd9VxYsJHrdq9i4bJPgoICQT961NaBCjkHZbDumpcW8J/v1vGP//7BnL+abqJRhMZIQIUKYHS5mpcwNtAsPIZqxgz0ayZOEXxM07klV6CJr576NZup+fH30BMSTez36eP7MvjGc0CTWungykI6uTwaW2PzqfYQMWNmHH+Q3okjOT6K+Bgbz1x5KEkm48l4bwBu786JvLt2DgAfdu7PnqhY4w2APOl3uKipD39uq12QMug+1WlQmt+hq72Gb1Z9bbqrGmvwRSyuaF52lKagBJQGIxNfA4NqyxhXUcCy5M68u6mKu95d4lvnrjXxhrI7gswq4LnoXRy1uA1eLtWrNlF0+5PULv5bZztuavjFN0v9mQm0peQVLYORFhAqIaxHg2rai77SGsXnmX11y+qxEKOJQzEKOnUZOE2UvTqL6q/n65bJOntYDha2rv6quQf0brw4YoN5WvsytErpMXnTuAbVnMS6B/XTV/Y9uH8mw7PTqaixMzzB+Lr/ufQjNi/6H9vfnML4inwALsnf0KTjbi+obBNNIhyC31+ukHPZ2nFCYAXoQCq0CXO9lFSE5wW6NygBBbz3yyZG3fIpB778Fy93P9C3PDBZrM7N3Lsq/7J/sa3fCZS/8UnQfqXdoU8/EvAyya4Nzkaw4dF3qHj3S3JPuQGhueFCBi8ajEjPPDSb2GgrUTYLB0bZKb7rOWp/X2G+D0WTMNKgJoVI39OcOKi86ARyA+Kgqm3RPjdhALsl2JtUBhQjdOzI9VkCtLjr7YgwsgJoNbK7js5utH2U1XOfjx3UmRdP6sP92xZzRvFWnxdhY1NxdkfTNSibVf9s/fJ3Los2FFJcUWca7GykfR5SWcjTm37j6JjwXr59ps6k9xUfUFbV+i/rRjEI1A3WoExCZWTTfa1KKpUG1SaUVdezYmsJW/bUUxCl8T4K+METXQ661VfRy+qkU3Is9X9vpPqb+eBwUnz380H7lQEalIjVj0JOLA12s30tylNWIycmgZ8X+EdzIR9qgwfw07uPo/bTK7F/PpUR0x6k/L+fknvaTWHHvihCY2Smqg+I89HicjfdxBc4/wSwyWnjP9+t831vyLSdGx3PqQeexInDJ3PCC/oEro7NxhPgsq4erI2/AtzV/mzXNW8GD8QCaTB1DuyeytSx3bmoYCOHl+dBgwbVWJmHZsxBRZmcR63dRa9o4/29mTWUDzoPYFeRPvj4tJJtPNY1/JdvSWU9j3z0V/idbS2CUh25g661XoPSJKRGGt5voWgLE59yMwcSYzV2Za2tNUBAnVC6kxNKd5J03glkXjGWPU/PCLlfV1EpIsafZmXnOadyy19VCJeLTo460pzBwmJrnGcC/JuMbD5Z5y8JsDdxUNqaQa6CEiy9Qwd/KhrHSIOqyy0Cgt2rwRuo28QXQGCyVSPqvRqURLDWW7a8rihgftRkN7K6FmFtXIPSxmMdunQxv9n+Ikq6OfuAE4OyDAD8++MVZHdJ4qrjh/DyknzuPeQCHMLClc48/kM4Jr6916AaKK+2c2enet4vDv5dGoJwD91dRp+Adb2TzAv5GVFZGwFmPoNqDEEalM7N3L/cIiWfdeqHGdFuF26bFa311axcSkuiBBSQFKcVUP7PUlNue3liJ77o1BerlIyzJzDl3S/Z8/hbIfdbu3AFcUeN9n2vikvg7/jQN/7UXE8sR+DkeMgEmk2RXc2s7NrSOIv2UP7aR0QPyibpnOPbuztNxuj3CPUTeTSoph2j2tp4BgS78AgYbULPoDkck+So1d8uIPXWi3XL3IBDWIjR7E/W+DWoWOmiq8Pz3cwVG/wvbGmxUOsd9DUoRtrB1qTSneTEJOoyFjRnDur1H9YZLr/w6Z8xGzQ0kFNcTd/4ON152hLjiHc5dO+DUJx3hP7l7nK5WbmtlOF90k2FZ0sT6M0r3W6DOSjNtIHGmiKAe/uONd13nNvJreO6U9k5k2dmezyDjRImtzRKQKEvCldt8X92lfl/gM1xqbzfdRAAjjonx93xVNB+Am8Qd22dblTT2Ih4pKjlogKPWS8w/iW0BhW8btavm/lu2S4cTjfHpHbn6LLdIY/d1pTc8zxVn/8EQFT/XsSOMs4XFqkY/R5OBJeIUt6VwelhnC53+EUuvYQz7jBykgh6wYc4bvW3C3yfK61RnHHASeTEJDKsuoTxFfnclPM30RoT3xtZQymzxWCTbooNgnEbaAjkjIrWzJc1CCjNS9MiJY6AuaDmaFB5pY171RqR5qjj3MP7Yfvpv+w69ELAcz9aU5PIcOSGLaBiAhKoXvDkz3y8cCvHH9SD7x84qVl9azIGqY4CNSjt1/qNOwBPsLFABo2fzivcRIU1ijRHPeW2GObtTOf8kf196zcrAdU2aE182ngnl6ZktVvz61lMJpbLXnhf910GCKiRqTaWPH0STrdk/P99oWt7UGUhs+N3Y/eOXAPHkE2Kro+O4o0f1vPz355AwozEDJ+A0mqF7UmDcAKoeOeLfU5AGf0eK92xVJioSc2ZgwpH5WrQoOal+h009tgDBZT59u5y//zLcz1GsN1rYl6ZlMnKpEzSHXVcnr8e6XAiomzM6jyAHXGN5/1zuty8+/NGbv3Ur9k4vJdMe+kEemeFD+88lkMHh5/RwLefZhoGflj5JfGxN0P/XmS+eDd1C/8i9eYLqVuymk6OLYYmTCNiAlKffbzQk53+h+U5VNU6QlZGbjECB02Gc1D+e8NZXgXJDQIKJpbu4oeM3r71n3fqy5NbFnJyiWeuvOv0E9k93D89sCW/9QWUcpJAr0Fp56BK7n3R91lrcvtmj+DPpODs4qUPv6b7LmvrdZ6AKTFWDhnYmUMHd2HLig91bcut0VDlHwU2SYMKWGfrnO4TTgBr4zUj+jBLM7QpbZTXqyUx+z224XeEOawsj29XfsX3K77gzkO70lQbX6DG3TUtWGOJ85YpD5VxQoQoySyi/Pf7eoMyFJvjUj3795q/6g28Bo2oqXeSHxAraPcJKP3kvEPTv0MGZNIzM3QG95bi6tzVpGvmgZPPP5HOL95N9IDeWFKTGFhj7vQC0F2T6khbIynQktJmVnUDE1/gQKrqN2NnDouU3JLzt26Z3WJlcZJ/sCAdTrI7J2Gzek4op7iaipqmZxlpCkpAofcACixTDR4PqW2aUWOZ02PqaAxZW6+fuNTENYl4/ctmS3wqE+NHcGe/8Z5tA15mTUp1FHijap4Q2QwX3tamIedhYEnqRreTknmrclmzo7Txxi1MOEX1EtwOBtaW0b+ugi5xTTdWBAqod/9xNMdoRrAfZ1XwjxxPQmFr4G+u/R7qDakZ+RvFwvTxljtvqOV0TFl4Qd/FFXVBrvUO6XG4cGrc1r/NyNbVlYo2ScLcGKIZaTrGVpjn6LOmJnFLzkpfMG8gI/qkU1nrP48lG/2xhkII5FdX+/4SNBaar5fs4PM/tvHVkh1Nvt8bxSDVUeB7o/T1T3yevNpBtwCy6yqY99dn3L9tMQAW6fbNH4LnOY2OsjKsVzqDuqdw9mF9Wt05RAko8I0IgKB6Puvi05gw6gzeDhBI4eTVc9fW6bUDzejTEhfDMaV699+NUYns9D6sgU4S9SEES/DcV0BhOrQCqn29jX75O5dD75jNK9okqE4XN7z6G0nnvs3098LP8fXOTxs5+u6vOfCmT1i7s3k515rLCFs9l3QVjPEGeBrxY3ovhoyZQqU1yvPyaOI71BnweMZGW6nT3AcxmtXnFm3WZSZpTsJVi8Em73cZiAQqZnyBdLm4OMxA1q0FlVwxaRDTJvtNt3UONyuGnkHhXc+ZbmfmLt4YzdFSaiw2Or92n+E6S2oSnR21/LRiNrNXfUO/mjLd+puHJlNR43+WXvrGvIyKlqtfXsCZ/57DqQ/9QGkLx04FBeoazUEJgfTOKWrr0wkk0dJNj/pqphRs5J7tf7Jg+Wc8uUUTsuCdHlj27Bms/895fDxtkk6LbA2UgELvoho4ar2t/+GGGR/CEVA4Xbpqp0KjQWU+cycHVxUFbdIQeBnYj1p7CI+pWfokpe5SvWlCO39GO89BHXPP1yzaUMgzvUaxOdajlVY73Lzy7VpcbslDHy5vZA9+Ln/ekxlBSrjuld9apb9GSLuDgx98nOmz3+WJLb+HbOuwWD2Bos3IJBF4DxSU1bJ8S7F//Xx90mJt5VNdtukQJj7tvXOkgSPNrtgk8qLj2fPMO1R98QsxbheZ9hqy6qsZV55Pt3rjAoZzV+ympt7JsRqNb256Tw454DRmJPY23AY8g61A02A4NEdAVVijiRs/0nCdNdUz95TpqOOA6lKG1egHQFG/LtF9DzfBrfZ3aa4wNiVggCHdBnNQCN/F0s79RWmEmwW4PH89XRy1um0brC/WNvJKBOUkAejT0QdGlxdFmcS1hDkc1gY5zs53cvmpr2O1CDJT4uiX3FXX9puVX5HoNSloRzfpwsW1J5o7Ebi9AaLvdB1MfnQ8sW69ENJrUJEzB7U7NpH+dRXUa+r1pCQ0Lf6kgZySMMuXtwDOnAJfWRXzctl+7BYLNXbXXgfqXvrsPF/dKYC0ow6GT/1zjTa3m3rv7Wt3uolrmA4LcVy3Jri4MS/TwmseoBfwx/JPfcsGjr3QtH2/q2Zx79kj9McTFv5O7GSyBXS95D2S4qKo+OjykH0JpKkekmcUbeGwijzTa2NJ1TuCDK0u5ctO/mipSyr1c9ATTcrvBKIVZFrLTYtgkKotKA5KCN+8uNZ70maQFzQQWW+n4Kr7qFuxns7P/pO4ww/a+z43ghJQgGur39QW+JAKE2dfGeYDoa0i6rJakdKT9iavtIY8TbXUE0u2M6i2zPddK1Smbl/BGYde1+ixvszIZmVScPlm/RxU+wqod/4xgdLKegrufZGRlR5toPLnP2F0NtD8UWWbBkpqNBJbGM7gh4w+j7N/3MWLTRZQ+mvRNS2Orfn+4MjFY8ezct7fPi+raOmmIcmRzlU7zESORql/wO8paITWunDjkb156Vd9dpSHPlkZuImOswo380Wnvjg117Sy1kFNnZP4EFUD6h0u7A4XUTYL0TarbpDZGNN2LGVqnte70ES7FPH6hLFDq0PPc1bUOqissZMUH01JRR0DrvmQ8ho7aQnRbPjPeWQke/ZXVu2ft1q1vZSjDmzBoHkDN/PAOSiJ8CUNvm3XCvbYYrBbLHSzN56TseqzudQt9jhS5J5xC/2KFjSyxd6jBBQgN/kfKrOHNJBwNShXkcZVPc48S3LgcbWC0gK4yioRNiuWROOKrQB1FuOfM5I0qEuOGQjAlql+9+NUZz2/L/sEpxCkPnhTs/Zb1YYCStr9LxlrGCNPAJeUusH6isRO/J2QwenFW0k2mYgPdNg5Znh3tuav933/52dries7npNKdrA5LkWXhVsXCxVmFhKze1/ruXfloGNwCoFNSl7ZOI+rd6/m9e6e+cRu3dJY98pYhlz/UVjHA6+buUZIWAUM6pFGUUUtvUO4eN/97hJfwCjA+UeaZ0EIRCtwhYlgC9TIhtSEFlBvzdnAoO4p3HnWSPZU1bPHO79UUlnP7pJqn4DS0px5wlAEBeqaaVDewUtTYyPr/lzt+/xHchc+/XQFq7aX8thlY1ttLkrNQQE2jYtooHOCmRgKaw4KfYVdV4y5+So/Wi94ajXCJs7tZPuAk9h+4BnULTWfjJ2at4Y7dyzjphz9qFU3BxVhbuZfZPThsIPO4rVuw+hmryHtE/OU/4EM6Znq+5zUSIaOlkTanXyVkc09fcbxYPaYoPVnFG3RfY93OUiw+X+EUlsMFw6dxIN9xvBEL3MzidbEd2F2HCkG51hrtbE7ozOnDj9Ft7y+wj+PEzR5bkK1QUkF0Auo31O6sjC1G/PTuvNm1lC+88bNjIh10T0rlcE9U3n/9mNCHqd/TRmHleVxaHkever06XJWrfqMNa+cQ+/O5sKpes4frJz5s25ZU3RTnat8iPm5pPNO8H1Oc9p1DjEfxAW/3P85wzMvFRgo3Vrl0V3llZQ+9TYVM7/1LAiqZ6efg3p20wJOK94GzQiEDtz/iz2G888ZS3hv3mb+3Bg8l95StLsGJYTYDlQCLsAppRwthEgHPgSyge3AuVLKVnPTsmg828JNmBhO+XbQCygZE5yyXku9sLApPpXPOvVjVpeBvuWJTofHkFRVw+5Tb6Rf7i+G259WvA2HsOASFl7s4bf9a13WpWa+x5lfTMV7XxE3fpTpZHFLIj32TV3sze0DDgfgnawh7IhNopcdXvKaShrj2amHcoK3iu2I7ODsDa1F9TfzWZaUyYddBgAwuLqU9ZpUPePL8/g80zOiF1Ly95+z6HLDI1R/4dEaVyR2ot47AJnVZSAPe916Acqs0dRYbXSz1+g0KBuSjGT9/TNxZHdG9skgt98xOJ7Sv7Arcwqhj9fcG+YLMifGOP5I+0J3aD4/02uU7/Ovt4wj+XDPPTtlgifbgCfNUDC371rBJG8F12qLzbefWJeT6KrQpqb6VZvIn3In7kFH6zIYVf22HEgx3U5LnVZAhXje0/91De46O0JA/IlH8Oqdz7EwP4VDK/KxDh8E0fp5p2G9PHFkgZkwGhwjXAG/wxHDssLqrxmlD79GxQxPwH9U724EeUkEaFCpznqipRvp2vtB6rDqUpZ459CXbynm9EOz93qfRrS7gPJytJSyWPN9GvCTlPIxIcQ07/d/ttbBLRX+CfZAs8p1u1fxSPYhQduEk8jT09B/s8oQGtSqxE4MM5lwvn3A4TySPZoFyz8lJoSJ7o7+h+smchvQClN3rT/xZ/Fdz1H99Xz2ANnrv8KakRriRJqOlNJnKnFX1bD7lOv5odJKzdQLKOkyyPeSamBemqfo3D0fzyHxohMaTWSqna9ytrC5JBR7npqBW6M5nVG0lUc1AirL7tdefJPP0p9Joke9/yXcX+O+vDMmkRNHTMYhLLy97ifdYMkm4LJjB/Hwh39RU+/krPF9+OSuSQAcdqc+KwlAcWE5UkrsqzaZFzAMwOyObhBQocScLU4vPKdM6M/Cdfm88u1aeqfFcsuSOdzfZwxjKgo5smw3b3cdTIUtmvHlfq2kzkSD05JzzBUAdNNcw95xAntOGWSEJ6De7DaMY/bkMLayUBebGHROXTvR9b8P+L4fcEB/Ug7z5C7cvnY7jBypa5/gnTML1KAq/94Eg7vo7tEom8VXN6s55F9xL9VfzfN9L3vxfZIvPU3XRrolg3ukUl5aRd3aLSQ1mJKbq0FpOLwsD9tlZ3JQv05MOKD1kk9HioAK5DRggvfzO8A8WlFAiUq/mSFQgzLKOA7hO0locdrML3eGvZaSELnNSqNi+SmtByeV7sRVXok1JdgEYjYfovUIrFuyiuTzTwTQFbCr/mEhyVPMy343Bel2k3/J3dQvX0vmC3eTMHEce555B/uaLVw17mL4div0GUPnADfWBvLueZFuKXEknh7aVKQNDwjXzbelOLVkG0Nr9uASgiEBpbLjNSNUX/Crxs08RuNlqdVO7u0z1qdZXTZkIv/a4Y8JsyLJSo/nhwdO4re1+Vw+0a9hGzkIFBdVUvzPZ6l4+/Owzyna5P6pMwl9AJhSsIEotxtr3LFB6567ajwXTujPgb3Tia+ZzJULllOQ04UTv0hmS1wKsS4nFxRsIt1RR2lULId4A2edBSXYumToBjiBaO+dkzb/zSZvxouQ52ezBAmPUFk2ArGm+wVglUGOvs15FZ5BQUC5kLKv5sO5h7eYi3ndn6t1wglAREcZpDpyMX3rMio++ky3uGEOavKBJ+MUFmzSzcw1P5DoDl+zOqo8l8tvOKLJ3pNNJRIElAR+FEJI4DUp5etAFyllHoCUMk8IEZxXCBBCXA1cDdCrV69mdyC2Vxb87rEpBz6ENpMJ5nCdJLQYxVM1cGrJtqBg4EBuHngUy/PW8foeYwFl5iqq7WvdklWGbbQlOfaW6q/nU/PDQgDyL/g/+hUtoH5lcICn2aS8Q1gouPbBMASUJjygGQUB94bRlUWMrvTY3ksCqo2eeaA/Oagvw4Mmm3mMJgu4VkBpTWxSCJya363hPjx8WFcOH+YPT6iuc7BgTXCwcElZdUjhZElNCvrNk00GY/VepwKXwZT1nLSe/LjyS0RM8As7ymZh/BBvX+OjST7jWBIdDvjiOcCjMa1KyGDmmh9YmJLFySU7sAsLH979Ft8PPZiKWgdf/Euf6d6Skoi7vErnIh3ldgclnDUiyuoXUL6YsSa8YC0aC0OlNdgaUlpZz19bStiwu0y33OG9N7VzUXujPTkLSoIX2mzIACuCY0cuFW99RqU1igprNHaLhWSnnR5OF/e9v1SXQb45vZH19qAady1NJDhJHCalPAg4EbhBCHFkuBtKKV+XUo6WUo7OzAx2rw6XtCn+F4pb6BO+mGklYZv4wtxmiDTWJgBe3OjXdGZkDWFLTrBHUa3FysedBxhur9X2HBu24yoPFkauPeaJH2sX/sXOcVMouP4han5ZQv2azaZtwaRAnsG5m4kUh7DqTKNmvPzNWt9nbdqZtibUy7HGGsXipM7MzanyXYPne/rnBwuj49llMvdTbY2iX2053eurSDUZSibERvlMS1p2LtsYss+W5OBjGqX5Ashw1nnXB/+GRdHx/JrSDdHI/KrvuFFRHLMnhwx7LYdUFOASgn51FVxSsIEMZx1lthguKkzhvXmb+XbpTioDcr1ZkjzeYoExPI4wNKEFj5xEwR2HsGTpRxxY7X3JN0GDEkKQeK7HccLsvXDRMz8z9cVfdcvsXsGh1aDKq+3N9jw1qoIsbNYgDar0wf8A8EbWMI466EwmjTydmV0GsmviVB6cpQ+I1w5ubb3DmxtzbA0v7dXe0O4CSkqZ6/1fCHwOjAEKhBBZAN7/heZ72HuEELzYw85Tm3/j2U0LdC/OOpPkmM0Zr4fSug46uK/putGV+tPPLwoWMCFjVQLTJv21PrhNuXmga+7pN+PYsouqj38k79zbyZlwOfYtO03bE2Y+NTNHE3uYrv4fzPcLyuq69vNOvHbQ0SHXXzjseM6fU+BzVgkcSFwzaILh/fRp5358/fdXzP/rc+7IDhZCtfVOBlw9y/Dc1+SETnRqSQoOVzByEJqzYjbjvKY3swHWztgkXWHOxrjjhonEu51si02mR0Amis6OWoZ4szY4XZJ5q/N06xvyyGn7GiWNNajL8tbRp9Z/HeLiY0nJSCLdWU+U92Vu5mZuRsb91wOe0vA371rJ2eP7cMJBPX3r1+0qC9rG6f1xA83QXyze3ujxnLmF1CxYpvfENBKqNptpvFuM1Gvsgc/XzDU/6LKQ9F76EZaUxhP22tdva7TN3tKuAkoIkSCESGr4DBwHrAa+BC71NrsUCJ4FbmGm9I7l9OJtTC7ZrrsoZm7AZqPNUITSoIalRZMQEA+T4HJgle6gF3lJWUAqGIslZPxW4Muv5MFXg9vUGGtw7irjtDPFd79gejytl14ojGoZAWGNhiOJrWGUn6h3S/Z4/f0nleqF+8b4NKoNYth2xyT6MtFH9Qoe1cbF2Dh6uH6C+rSirbyx/mem7VgWsj9GAsVowJCgmU8zu8dyYhINTXxmDLxiMmtuOogNF/dj1MDg0hqHlfmzY8xdoXfnlt48k1pz6OO9DzYc1MS4XbpzslpFcBxhE+81W2YaIj4WAdy8+2+e/elDzhkQ+vev9MqHQHfzuqI9Bq39uMoq2XnoheSdeStlz7/nW26oQUVZDUfN36T35uuMbACSnHaSnfageMn+tWVBv7w1q3GLlKuw9ZM0t/eboAvwmxBiJbAE+EZK+T3wGDBJCLEJmOT93qoIkwBYS7TxyLDJU/I2q87lM7DmTVR8DD3q9KPJlX/OYv3i9+niqOW0oq2+5XmBucosAkeodDYB6+yrNmHfuF3fRlPWW7e8wlizkrXG7QFECGcQXT9MtNNw5hMAztC4tlqaOBJujLplayi++3nDuTOAJ3uO4tQDT+KMA04Mu6jd9jKPuerRLX8ErUtwO4M0ZfDPUSWcZqylvXrd4WR7Y4Z6xVl4cstCji7b7at6a4a1S0bQsse3/sETmxfqlsVpJs7NBlgfdhmApQkaFEDSqUeTftEpWDsHhweML/drTT//HSCg6jzXMPAlayQ8C6PjdPe+RQhEQoAjUjNumwYzI0D9yg0Mfvs93fpxg/RT5nvcnr45Ahw0Sl75KGSMWvmbn/qyyJf++w3/CkMBZaxBvd5tGJviUwF4d90crspbG2QVqjewvti6mqej8vX/3hcpeeCVRtvtDe0qoKSUW6WUI7x/w6SUj3iXl0gpj5VSDvD+b3VRrb3ptIyINTYdhRuo24CIjtIJqGNHdOOq4wfTo1MCn999HCIuloOrgl9QDUfJrvPPEW0oDBBQbqmLxg/qKwKi9S9R+yb9KF6aCSiT5SEx0qAMnE2MHgwwF1yBPH6Zv0R1S4on6XKx+4RrKX/jE3JOuMawTU5MImsTMliV2ImDDASLEctXea55qks/r9KtvgqB8Tk4hIVOj99m6m1mtVr49v4TeGDKwcwcER32Ax092NikrJ0fA3R5Hc00qIMrCoPur3CJGTk4aNnoyiKivOrA6h17KPAOyKTD6ZublAEX6/rdq3hAE08GMLCmjLfW/8TsVd/wfeVf9OiUsNcaFIAlTa8xdf57NT3S/YJv0Qb9/dCgOQdqUPWFpbgKSyl56D/kXfB/QYNGWW88R2UUfiFsNqSBCqW1RkRJN1UWG7O66E3MRjW+rJlphscOpOylmUH9bknaW4OKGAxTCFmtfDHtWF9dl8WaZ7epThLCZtN5mtmsFl6/8Uh2vX0hpx+ajYiL4brdq0lwel5egSaawZp4mbm7qvU5ttzuoNIMWs4s2gJ2hy5OomaufhTvNjHxyerQI3EjAjWo/CunU/vrsqDHx6z4XY1JyqZAUhOiufjoAVw+cSDnHG4+h9dUpLZciUHMSPSQvrrfv6vd2AwayJKkYHMW+AOpjQTzB10G8kWeJ12OGUN6pjH9goM50MBcZkT00L7EHNDfcF3g5H9RVByfd+rLbylZpnOGT25Z2Gx34/iJ44KXuZ2MrPZ7qv2yymPyk3Xm5SmO37OLCws2snjpxxwRU0+Cy8EP6b24YOjxzOw8kAMSLcREWRGx0b4BlCU5sVlp0K0BDiYCGLVxrXFjYI/0/K6BGpRTWKj+5lfKXnifmrmLyL/iXv1+TUzl0siBKMoWnIsPmFy8nQvzN3BuwSbSHPU8nH2ILogf9M9h1EBPZpCmxETW/r4i7LZNRQkoLyfNKeD4Eady7IjTKLHF0O2rl+m1+ANiDx7maxOlyW4QWFCwUaJtunLLgbEriZOPJstew3d/f8UjW/6gi72G53qMYI/Nc8wxFQVEed2T11c4+fpPT/7ABhOB0QR3jNtJtNvFlfnriDl4KFH9/ZO5le/pUwqZ2ZPdZgIqhJeICHCSqP7Sk/ki0EnEzAHFKMbEiMyUON697WjeumUC/74kOOVQSxFohpFOl06D7l1XybAqA9ffABandKXaYuOjTL1waLiURtfjh4zeXLqogj/WmxfXayDxdH8sUpXFxrzUbjpT9Oed+vJMj5E8F9WdLbGNz5sBHHnQWfxf/8P4X5dBQXOG8S4HP//1Ob1MSm6EQ8yIQdiygzOBj9vjN+01VId21/k1z0BhecXgY7it/+HEup38OO0YXl//MyuSMimOjuP3lK6+SX8hBD2+f42UG86n2+fPN0uwZr5wV9AyI/NsA7uk536uC6jpVm+xUv29v0yMY8N23XrTuVyzmD8DE991uat5YPsS/r1tEV0ctXzSOXhgcoomTVb6XVcBYAk0hYagNb35lIDysqXCyZa4FHbEJeMQFqIH9vamD/ETHR9Ht/oqetRV6UbNnR6/rdH9iyi9iS9QQEVld6PLmw8y5LKT+Xf2aP4x4Ahe6jGcX0YfRvwJh5PisnO2Jsfbp797PWgaBFTAy+N6awmVL5/Ouk1fY0lOJPPJO4ifdKhp/xxbdhm6mpua+EIlIDXJABGoddaYZA4IV0C1GoHnFpi9w6mffD+wqoR318013V2qwzPyL4iO55e0HtzdT/871FhtXDH4GH5MN4/li4tuXKsUUTZizjmB84cex8GHnMfUwcfypMbJ59uM3rzS40CeictmSXGw+WhjXAo7TQTXn8mdKdfEe6U56vht+af0qq8iql9Pw23CQVgsdJ/9PMmXnUbmC3eReM5xALoMEz+t9Aorp7m58dfU7nzZqQ/R0kXs6GEcHOPwVcMdU1GASxM3GDN8IJ3uv4GY4QNpDtH9epJ8mT5rw7jy4Fi0BtbIWFwut65UCsAeW0xIC4UwMZtKo0wQDqfpM1l33in8Mu4IvvI6S5jR9b3HSDzlKCA8JwnfoZWAan2iNF5IbiEQBpnHe2bE8etfnzNvxefMXPujb3n8ceMb3b+IsulGUNEGE52Jpx5Np0duZoDGnPcTSWT971FSrj6Hcws3+ZZ//edOT24vV4MGpf8po48cTVR2N/qsnk3vvz8j5sABRPcLHczsKg72KmqOic/sQQmctzPLvl4dhoCqqXNyzmNzuODJn7j6pV8bbd8UjDQm3XeXKyDbvCTFZR6HpS0E+JHBCLbCFsOvqaHrCXXPMM9iryU2PYnhVSU+L9O3uw4h31vT7BdvKimAq2f+HbTtfX3G6r5bLYJedRUcVpbH1Ny1lGoE1MC6coZ8/SKpN19I1/f3zofJ1r0LmU/eQfIFJxF36EgARlQVE+f1INyaX8n2gspGM/EnOu30/N+jAHS55UIuKtjAO2vn8PjWP4gNw226KWQ+eQdZnz7r+963roIuFuPYvRJsjDdIR7UnKsbUtA4hNCgDTUk6nUGBug1scEVxFdn8Y8ARhutjvZYZreNM4mnH+GLlGgshUAKqDfjhwZP547B4ftr8IwOuOROLN7fYzPmbEZNfR0x+nZSP8nmw9yH8FVBwLZwYEBFlo1xTCyY1RGG+p7YsJNlZT5LTzm14TDvWrE4cUF1KZ6/mVlpZz9LNxb6bMtDzzZngeaGJ6Cidut6gwhvhNtKgTNzMQ2Jiggg0y5gFO5pl1dZS73TxycJtzPp1C58sbOF4DFeggHIGfHcFBHN7vmXY9S+bzvYant/4q66swe8pfnfxHnVVLFn6UVB4QSA3DUlkZN/GvarAkyFi2s5ljC/P4+Ti7by4ab4vXZcl8HoHaN2Bc4K3nHoAc1d8wTvr53J97mrdPZbksBM7ehgZ917b6MCnKcR6kxZHSzejK/1mzV9W5ermAx0GA8gqWzTH/1RMVa2DqN7duHPnXxzmzUBuSTXPjt5cbJoXugCOtOjnCdMcfuvDko1FzF+dx4e3HeVblhedgLva2EIhnU7juSYwDGL3OJAYP0+Z0aFf8w05+rTmTmtqElkfP036vdfS/Ru9p17Wh0+RvfEb33fHjlzzvu4lSkB5GdwzlXHTLuLotR/Tdbrfc+ufM/SeQe9mDWZLnD4pZTgxICI6ylcjBiAt0TzyPruukkXLPmHh8k8ZZvFsI6wWBHCEJkbk++W7fDdroAaVV1rD5c/N46Knf+by5+b5lsccbJ5OycjEp61npSOEic/sZg3UoLLrKpn712yOC4gLmp/avdFAaO2E856qem78TwuWfA8coQaZ+JxBGhTAI9sW+ZZNyd/A78s/5eTSHRxWnmdY+HJ8eR7pznpu3bWC+7ctJtFprIWd2CM87QnAmpKEBXhn3Vye37yASXtyiPEKJqvmN0uMi8KSpn9pD8iIY1TfDHp0SuCDO47hqSvGkXr56YBnnmymJsP+nix9NeiWIlpjLjxUYzb7Yfku3X1VazJ/uXRzMRYhiB1zoG55OIGnTcWaqXeR/7/KLWSle36rsws3B5l93VLSW+Pttzi5C3tqg7VCV/Eedo4+j5J7XzI8rpGJTzpc4A5efnefcTxWHDrLx+Nbfvd8CHg+Yw8aStrNFxIzYhCp/7gES2oSSRecRNzRY7CmJfs1LruD+lWbaA2UgAognElTi/dBl8Dq+HT21DhIm3Zl6I1sVl657nCWP3cmPz9yCocPNX/A448dR7R0E+92+vLRSW8qnyPL/QLqh+U5PkER6CTxzdKdzPhpI+/P28yMnzZi95oXY4aZF3ZzlQZnHzANxgs1B2Uykgt0kng4+xBOGX4K81P1c33rEtJ5sucoQhEYlf/GD8HZMZqLDNKggk18bs2j03A/TNyTw5ObF3JV7hpuyfGb0NKd9RxiC/ZAOzPZM3K9LH89FxRs0kXzv7xhHmcVbubBrYs4PCv8CesGTcHoLu6vyarw66OTsQaUNX85vZzlz5/Frrcv5IKj+iOEIOO+6+nyxgN0fe8xFqf7f6eDxhin1WoJEk71xHwdpRmMfbN0F7WadFZ1ITKnREdZglzBLQnhC/lwsaankHL1Ob7vmXm5bH7tfH57/FQe3rqIITV7uH3nXwBc68xj+vkHcVDPVIZ4q/M6LFZmG5QIKXnkdZy7g50ufCZOo+fL6TQUXJ9n9uXbCvNr1auugsMb4s5CvPsy7r6KPpu+pfMLd/nekXFHjfat1yaebkmUgGoEbeG07NQYjt6TQ05MIh9l9uf5HsM5ffjJDL39K8Q1FxB3zFjT/VhiY+iWkcCofp04eng3Oqeav3TS/u8yYscOJ+W680i+5FTAXyZjfHkewvtCXLyxkKJyj1kpUIMKnJAtKPO0s3ZKM9Wi3GVN0KC021XXUrd0jW/uxiz40Mg1v85q82Xw1jIja0jIXGWByWFbtNxGI3NQOF26IpAWjbA+o3gr/9y53Je/roHpVr0X3oNbF3FU93gSTj4KgSdb+WX567ksbx1nF25mQtluHt/6B1MKNzUpVsfWzTCvMqB3Y4+JsmJJD3g5GhzHkuDJKp94/GH8+dxZJMdHERNl5aKTDgxq21JY0z3CZWBtGX0TPH2qqnXwy3p/RZ4aEwE17ewR2KwWg7ix1kkm3JD6CDy13+KscNjQrti8x7sudzWbF/2PO5bORQiBRbo5TzOX/Glm8JykPcCbr4GGsilGz5estwebptHX7zLi1GKNebyJHo2JpxwFFguxh40iOsTAd2+IhGzmEYHd4cLpkjjdbuJjbL5SDjEal+mXzhrCla+U6iabAYoq6vjPd2u5LESwYlAEewhiDx5G969f1i1rMCekOe2MrCrir6TOuN2Sl77fwGWELlX/44MnkZHkt9knnX8i9cuC4zZcpQZzUJXGc1AN5aWly0XOpKtwbNpB8uWnk/nE7eZzUE14AMZW5FNWXU9inPE1dQY8pO/+Y0LI8gxNohETn3S5g0x81q6dcOUXY8aIqmKWrFzMrM4D6F1XycmlO3CVJ+rmMW7YbZxpvikvjqi+PYKW1QsLv6V0o0ozEIiNtmINnJdpJBvHiD4Z7HzrQuxOF5kp4d/PTcXi1ewEcHKKmxe9Uzuz1xTSIBa/rF9L4aN3ccqD3/u2u++Cg7h/ymiMMHMg2FtElA1rZpqnMKmUuApLsHU3jkdbt2sPf63YocvOsToxg/Xxqbo4R0ucsUnOXVvvidc00JTc1bVBmn9jFRfOKNrCAdWaAWgTs7HEHzOW3qtnYwszqLc5KA3Ky2F3fknCOW+Rct4Mlm/xv2i0sUtRcTGmNVPmrNiNrDZ3KBAmN124JF/kj1U4r9CfJPWVuZuoE1ZTAXX5xIFMGtWDeE3G67gjDjZsa+gkYZLSqMG7r27xKhybPDFZFW/P9qw0mYMKp0TJkWW7+XX5p7y9/md6dDKfN9Ca+AZ0S+HCCQNarDZNsIkv4Dd3uXRxcL2+eJHEsyaG3Ke7rJJ0Zz3X567m5FLP9XKXV4XlYBPqvgrEGpCi5t+9DmbM6HO5ZvDRFMT4s6WceP93PEaW/jcJ4/qlJES3qnACiB7gd7qYlO8Prfh6XYmvBElWlOTkQ3ox+57jSEmIplt6PBdN0JsdE07yeq0JQcIJh7daf7XXvEH7ieqjHyjEjBzMr6vzePirdfyrjz44+fNO+iBzEW98fRsClY3meN1VNUHPXXlAGRitk8wLG+fz5JbfmbhH44HX1OQDMdGtKpxACSgf+tpC/h9SG7sUlZ7CwPpKJuzJYUqBPkfbr6vz2DXQPK5irkhl5vzNbM4t92kfTcESH+vzcDqzaAu9kz0vthE9U3CK4Fx8n0ybiPvLq3jrlglB+4rq28MwNU2gm7mrooo6kyjxBvdYd0DpDill0Avet00YD8BVuWvo5vVUNLtOz87+m/Oe+Mn3XfvbtQgBo+2gOShngJu5EIio0I4yhiVOCkrCcrBxFZc12qYBIQS2nvr5TSO3/e0FlbxQmcDbWUPYGZPI9OwxjMnN4NVv1/LOTxvbvACkFm36o8G//06W1XP9S2qd/J7iObeGdD+njctmz8xL2f7mFPp305ssOz32D1L/cQlZM5/Uaaotjazye2/mnXeHYZvabl2xWS30TvMInwkawfB9Rm8k/vRClljjQYsvk4aJgAoUXG9n6dNIvbH+F84o2sKrG+ZxUoBjEoQ3/97WKAHlRVudVSuUtJ8tsdF8PP1EZg4W/GfaiVR/fIWu3bg1USzoMyRo327gXxXJTHnqZwZc8yGzF21vVh8bTDIW4EpLCScd1IM3ti4g0e0MSpNTa3eZ3nBCCDKmXxe0vG7JKp19W5tBOZAG01+g55+7sto07X9jGeAt0q2vTmsS93Lbm4tYsdWfucG2F9VJjQgaoRoE6roCsmQbBVVqgx2NCkK6ikob16CEIPHM0NpZIDZN5vPJJcYu+A2F+97uOph7+o7jg66D2Om0cv2rv3HVS7+2aG7DphKlySxhAU7I8Q8GZzdoG5o4QiGEYQFAW1YmGXdfRfyx5nPDLYEMcN93bM9FBnjU1dld/Ou9P/l+bSG96qt40htKAp6s9X8nZPgGQkYxmOBPlGs0AJSV1UGmda3XJXiq4D655Xcm7TGo1wYtm9CyhVACyotZdVats8GEu7/m+DmF5N99E0lnTiQ+1sZPD+vLpF/eZTTDx1/Mv/qM9QVIbo1NZqfT80DFRVs5+kC911r4nfSb6c7/fjZPvfo4/PonoFfnrz9pKBcd7Td3SCn5+Let3PbfP3xaScrVZ5N2x2VEH+hv5yraQ+18f5nxshfeN+2Ke08F0unElV9CQVQcL3U/kCVJnXGXlJu6mac665m+bQn3bP+TycXBL87bd63QJVKV9XZq6pzUawKcjbQqm0UgpfQELrcEMlCD8gso6XaDlDqTqs0igoIqbdnd6bXwf/4FBvMG6fddhzDJlt939890eeshesx5IyijSWNoS3McUF3KiCrzubGCmAT+0MRmAZw6pjfWFhb6TSFQ2J/uzeSfaa+hZ30Vd/cZx31047c1+dTWt18dsAYCB3vlb38eJCwynHX89fxZfHTFKD5b9S1pTjuTSv2C4saBR5EnPfeQPdZMQDVoUMH3eaAGVRQVG2Tia5QILHMTeT1qJ7SjcDMTH8DCdQXUaB6KY0Z0574L9DWjatwwq8tArh10NG48gXB31u/gzEOzuejoAaSGiIEKhTZZpgVPMGMDZTb/iy49yb//BWvy6Dt1Fuc+Ppdnv1jFkOs+4ps/dyKEIP2fV9Lz57dIusBfUbjqi58BKLjqvkY6I6mZ8wfO/CLu7zOG53qO5NIhEynKKTJ1kkhyObikYAOX56/XeQ+dMLwrmxf9j2ty1/iWrYtP4+q7PqH7Ze8xTROL5jIod/3X1hK6XPw/Xt9LV3P7hm3kXzmd8v98pF+hFS7ez1qzWVJcdNBLVdisiIQ4RLzxywYg+ZJTPclLDRDRUSROnkDMiEFNPAtIPHuSfz/Ac5sWBLW5f4rxPGRmSizPTjVPidVWaAPKh9bs4b21P7Jg+Wckuhx81GUAb7rSOWLalxSWNyPTSQuTOHmC7nvNT4tw5ui9NmW9na5p8Zw2pBMJ3nlsbeqyKmsU8+I7M+nebzhtp7FLfOFN/8ZVVmnoTu6uqtU9dx8FFMV8fHgYcWDKxBe5aHPjaQWU3eBmiAoYXd5z7kEcOSy4oNzqxAw+z+xLF0ct91w2nk/vPo7Xbwy7on0Qhjm4vByzJ4fp5Ru4f8rBHDvCbyI5uF+mrhz6ht3lnP7ID2zK9cfEJJzon0B2bN7Flm5HUzX750b7k3/J3Th35TPHm0POYbHy/Yrd5sksNWizFhjlmfsjuStv7qinrNrOy9+u1WXzNgpoLSqvCyuhaijypvyT6i9/oeIdfVoabYod6RNQ/j4nxUcFp6XxujpHDzHOsp504clYkxOxJBuXedkb4o8cTZc3HyRqgCczdc/6Ku7Z/qdv/VEHZHHlpEGGTls73pxCz8yWD2ptKqk3T/F9FsC4igJsSC7O38C1u1dhRdIrM5FeEdBXgG6z/QU8A5O+gsZFXKPlHFJZyAPbFnNy8Xae27yA+3scxNwVu1leLVjvreGkxbFlF6X/ft0wIBeXS5fYeVeM/rpc1K/x+6yxVFLtgRJQXmwW4zkouzP4ZRto746yWfjpkZP54I5jgto+0fMgOOv4Js8jGJF268VBy5wIvknvzWO9DmZ2bBemn38QEzQmxPhYGxtfO0/nLu90SV7+xq+t2DQmpLrFf5vO/RhRM3cRk0p3MrS6hKHVJYyPd4cswuY7jkZAxRoIqMvz1/nqLB0yIJPSSq8Hk9NlWqbj09+3UVFjnhOvMZw78wyX6wYGLiMNKirI6aSh6qlRQT7PTj3/Yg8yz+yxNySeejTpd/rnSC/O38CpxdvolWBl2tkj6dEpkRN6619iqRY3cTGREXkibDbijg7OUB8jXYyuLGRiVC3PTj00Yib2Y8ePxNbdPAbNV9spYJB5YcFGnt+8gKPKcjnOa/ITSJYlGe+r4u3Z5k5IXkcchxC64PfJWdEkNWK1EXExRPVsnewge4MSUF7M5qDsjsY1KM/2Fi44qj9Lnz2D6ef7TX6duqWTf/NULLF752YOEDtueNCyKmsUtww8ksUpXfk7JpULnwrWfNKTYrlykt5U9MWiHT5NMapXVqMF5xpG40a8unE+X676li9XfUuX2krD+ZYGcqPjmdl5AG9k+cuYxMZGBZm6BHDXjmX8+tCJLHziNA7M9rzo3XV20+DDmnonr35rXpenuUi7P2BYOl24QVdFNzHWSIPy9NFdYVLHySvEjQr2pU+/du867EVoBL8NyTObf2PtpQM54WBPOqHbJ+mDROsMBmPtidELUwATynKZkVbKmeP7tH2nTBBCEHvoCNP19jWbKbr9SZ8mZcQl+euZ1tXBX0PtXFiwEYCdMYnc1Xccr3Y7wF86xemi0hrFssRMnbOOu9xT9uTB7DEURXvMhBn2Wt4cl2Jc705D13f+3Wib9kAJKC+6OSiNBhBYBROCNSgtB/fP5IELR/Pe7Z50LQkpCRwWIq1RUxBC+DJLNJDqsjNVM3dz3KjgQE2Ae84dRY9OfjV/e2ElHy3wTD5bEuPJuNe4cmwDPX95i5Trzyf6wAGGwaANONZvo/qHhYbrVsenc+RBZ3Fv33FsSPDHT6QkxpDxwI1ED9O/MEdVFTM2UT8HWFcbnDJIyzNfrGrWxLndG8tlhLa8vSdRrODZTQt4pHAlz111KBaLCPLG81U9tZtkw/A6YojoKF0hyc6v3UfqNec2uf9GCIP0PtrK0UcdOYRDKvxm0ckEp7pqT6KHmmcnMM303Y4E5v8LpOLdLyl77WPT9QdXFXFj8Ua6Wz3vnDeyhnLMqDP4uPMAnu41yjevVF9n55Thp3DeASfwaG//XKK7ooriqFg+yfRft0vz1xMTZcMSogBhwqlHE2+grUYCSkB5MYuDMjTxheHhNOWo/kw9bjDFFc0omR6C1JsvDMpKccfOv5i2YxkPb13Epccax2J1y0hg51tT+Nd5/hx3j326wleZN/Xa84gZPcxw28QzJyJioun0wA30/Pktun3+vGn/Kj/8HvuazYbrym3GDgGpiTGkXHEGPee9HbSu7vcVuppUNdXBAuqSqHJ6eoVvYVktb85pmrOElJL8i4OL0DWgq4nlcmFFMrlkO1Oqd3PLqZ6XUtAL02viMzN3ar0ROz16K92/+w99tv9I0pkTTesANZW4QI07OoroA/yT59bUJF5KLqVfTRmd7TXccW2wibo9iTvS2JEDMK051p5ED268qnND8U4z7Ou2IOvtbItN4vHe+vP/V99xLEruwq9FdnZ755hmZHnCWlwI1pc7SHHWs2jZJzy7aQFTc9dwTe4aLMmJWDuZB9SKMGqNtRdKQHkxi4MyElDRUY0/HEII3rjpSHa8NaXRtk0hqnc3std9RZ+t/hQvNiRT89ZyfuGmkDZ5IQS3nnog8d55hlXbS5n1q9+TqOt/HyDtn1eQ9eFT9M35iW5fvEj6v64h4+GbdfuxZmUaRruXWaMpiNIvT7/rKl+9oMCiig2kxJvHAhXd/iTbek+i8pMfqalzMnNZblCbwvwy/u9Mv3nliU9XGppmzXAV7cGxxSQ2BL0GpQuS1Lwkg7z4Gs7VLMWORnCJKBuxo4c1qYppOIiYaLp/8wqWpAREQhwZ914blN5ozFfPsn7WVeR+PJUxk1s3XqipRA/oTepNFxquEwb11Nqb6IHmZvBwcZeUU/v7Cjo56rg8L9hcfcPAo9hdrb+3p/U9lEHjLuLYuBG812UQKS47k0u2M23ncqxI4o8b7wsCNqKxIPP2RAkoL3ovPv9LxdFMDao1scTFYElKIOuz53TLG6qRhiIjOZZbTj3A9/3Cp39myUaPM4KtexfS77ic+GPGImKiiRs/krRbLgpKZyKE8KWj2RWTyICxF9F/3MWMPuQ8nu6lz0JuzeqErasnYHVUZREfr/6OmWt+0NXKCVUbq4GZd73NwFNf4Pbvg+OnDi/P5cpJg3wJeHcVV/POzxt9692V1dT+sdI0Psu5fbfhcvDksZM1ehNfA9qXZNBD3qBBmdXJaZ3UcEHEjjmQPlu/p+/2H0m91th0aMtMw5ocGd5wgWRMv5Z+RQvoMfe/uuXNcb9vbawhzGhNwbF5J0kuB/fsWMZnq77lkjy/RaDcFsODeX6N58TaAp9H6YX5GzjHmwYtZuRgki46hd5/f4YlLibk79sanqQthRJQXozioKSUQW7mFovwaSDtTfwRB5O95TsSz55E4hnH0umxf4S13Z1njtDFSo29fTZPfx5cYTUUUd7RYlFUHFKjtf2e3NWXdin6wAEknnKUb94j2eVgVFUxh1QWMqC2zFewMFRtLPC8y//XdZDPrKHlgoKNTC7eTkxVFbed5p8DmPbOEvL31CCdTnYdcwW5p95I8d0vBG0P/hRPVRYb2uHI61lDGTb2Qib8VsnSTUWevmgFlNbMFGAm8QmvMDQoRePEjBhE5rP/JGbEIJIvP12XmzKSSDxrUuONDNCWrtAyvLqE6Tv+5F+aMIEyt/9dldYljUvz13NSyXZ+TuvBnf0PAyD54sl0fvaf2DTZTJIunmx4jMDSJJGEElBebAZxUC631CUVsFkF/zxrhGmG7fbAmpxIl1en0+X1+8MeBacmxnDPuXpN5463FrFqe+OlNRqI83osVQVUv82PSWDejFfpvepzevz4OpakBCxJ+sn6To/fxseOjWw+OpGnrhjH+CH+7M/a8uHxx3seNgFM27nMV2akgbHl+Ty0bTEJbifFdz/PDScPo3dnzzUoraznuld+o+a3v3Bu95gFK976zPBcpN3JT6k9GDv6HI4fcSrVFhufd+rDE945gJVVMO72z/lu6U5wuZif0o2JI07j5IzR3PPuEk8fAzWoBhOfSdXgkPW0FIYkX3QKPeb+l8wnbm+xebqWptPDN5Hx0I2+Yn5xEw4xdSrK+shTsTbzuWl0CjCjB3Jp/npf2IWWIdkZfJLZn19TutHFXuMXZAbm9Izp15HxwA10efNB3fLWqJXVUigB5cVoDsrpctM5NY60xBgykmKo/2wq/74kMr1dmsr1Jw1leLY+RueK5+c3miT0ry3FfLJwK9aTJwAeN/dA7v7fUkpjExDe1ExazzGApHOPp9fv75F9+0XccuoBuuzYCccdRq8ls8he9yVZ7z1G3/x5pN40hcE1ZZylibwHdGULqj7/iQQrvHmzv6T27EXb+ejv4Ic6EGm3c3v/w6i32NgWl8KbWUN5r6ve/dsl4ZxH5zB7RR6lUbFsj0tmtS2JHUUe197ApK8NbvMpU882PmYrlX9QtC/WTmmkXnsevf/6hB5z/0vWzCfoMuMRUq4Kvg9iDhxA2s0XknzhyR6LRAjPRAFM27E8aPngnqk8tvUPViz9kE/WfO9LtIzBNIQ1NYnU688n0VsQsgHpMK+71t4oAeVFK6AaHCNio20U/O9iSmdeSvEHl2JpYr2USCY22safz5zB+7d7PLfioq1MOaqfab7IH5fn0O+qmRx062ec89hc0q/8iIUXXWiYKXtPVT23vfmHb/5OxESzJTaZjXGp1AmrziXbKNFrVJ/uPq8jYbWSMf06Oj1xG//YtULXLtmlf7Ac23I4dkR3rjnBn7D3jl/zKYrypxsyyuUn6x1UaTwMP+7cn5WJnYLaVdtdPPTjVnZrylake82TgaPkBqGcdP4JPnOo/qBKQHVkRJSNmBGDEDYbMUP60unft9Bnxxzf+vRpU3WedcJiaTRx8EFVRbocljFuJ6O7Gms/jTmRpN7sdT4RgsSTjwrZtj2JjMmUCCBJY7bbm2wE+xLRUVamTOiPEDBmYGf6ZRnbosuq6jn3ibmUV/uvi93p5tLNFgaMOhIqPJrMwO4pbNztiaV5f95m3p+3mTMOzWbymN5cOfI0v1/AmW/xj9MO5Jkm5HxLufwMuj05g0e3/M5d/cYT5XZxavFWXZuanxcTPagPT14+lu+X72JHYRWl9S5uHHAU4yry6V9bznXl1cSk6k2hMiBWKU8jgHrWVfLf9T8zdfAx9M5K4eMrhlPxxWucWbSF/GHDGHaip+S3NUXvHddQvFDYbHR55V5yJk7Vn1CEZEBQtB2W+Fj6FS3AXVOHxSBHY9rNF1L67zdC7uPRLX/Qt7ac9fFpXJG3jk7WoVSecDg13/+mb9iIG37a/11OVP9eRPXtETKusb1RGpQX7UT9nqr6dq2H09ZccFR/U+EEsGRjkU44adlU4Tez3TL5AC4+Wp+k8vM/tnPF8/ODnNbqm+AG3kDG/ddxTtEWFiz/lIXLP2VCmd7lvH6Vp5R2Uny0ztS3LLkzL/cYzj8GHMGlL8wP2m9NnfmAZFRlEf3qKpi96ls+HOAmNUpgRdLNXsOh1hqG9vKPgrVxZNoCeYH1mQAy7m2ZbBGKfQ8j4QSQesMFQcs6PXm77nusdHHT7lW8vOlXDq4qIn7ioWQ+ebtvzquB4JL3AX2IjSH5gpOIGxucnSaSUALKS1qiX70uraon6vT/0v3S91i1vbRZBQb3dRasyaO6zqNZuNxuDujtfxFbLYLMlOCHbFS/Trxy3eEM7pHa6P4HBBSXC4ekc0+g1/KPGfXWdDolBJsW3VX+yrPHjujOXeeM1K2Pcru4ZGRwOW5hd/DcpgVcvXu1bnm028V1uZ5lKS47UVXV5l58QJdX7iVmxCDiJhxC0hR/GRYjL6mo7GaWXFF0WER0FL0Wz9Qts3VO18Ucxh3hT6PW7euXscTFYOvaiV5/fqirPxY9zDwLx76EMvF5mTymN8uePZO0xGhKq+p59+dN5JbWMPymT/jvTUdy5XHBOdM6Kmt2lHLktK8AmHXnsZx3RD9OHN0Lp8vNrqIqendOorSynqPu+oq1uzwu2ikJ0Yzun0mUzcL8Ryfz1pwNrNhWzCcLt/mcTv5x2oH07JRATb2Ta08MLuwYDlE9uxLVsytdZzxCycOvIaKiqFu0EvAXUWzgkYsPod/y5cxYls9vqd04rDyPo7v4ByJSStxuSbTTySkl2zmlZDt37vqLrbHJCCTd6quJ0XjhVbz1mT5oN8DOH9Wne1C8DgRXKo0alN2sc1d0fKL69iDzmTspuu0JbD26EHfkaDo9cjMV739N8qWnkXjq0ZS/9RnR/XrqtB9LXAzdPnmGyg+/J3bcCKJD5M7cl1ACyktmSpzPm+w7Tabv/lnJnH1Y4ylMOgp1didnPzbX912rDdmsFvp09WgDnVJimfvwyUx56id2FVfzyMWH+HIUdk6NY5pXe5m7IodHPvqLPl2SePDC0S3moh93+EH0+P416pavZffxnjyCslKfmFUIwWTKmLDeXx7eXemvfbWtoJJRt3zKvV0cnI6/oGjfOn2VYC2VM7/1778J2Qx6LfuInQd7AmW1WcYVikCSL55M/AmHY0mIwxIfS/JFp+jivtJuNM5OEz0wu8OZjpWAMuD6k4dx5vg+rM8pY2SfDFLCyHTQUYiNtnHnWSO4/tXfsDvdDOyWgpTSMIVSVno8v/zbOPivgYkjezBxZOtNwmpd2F17Kqj64hdsWZ18iTtdJfoEqO5Kj1u4q3gPn83bQkWNg//bBj2SOnOIQZxJ6IOHbyGP6pVF38JfkbX1pnMQCkUDgdlb9leUgDKha1o8XdMiN4CtNbl84iDGDMjk3V828ff2UsYOMq9z095oBZRzZx4FU6eDxUL3H14jul9Pauf/qWvvrqim9rfl7D7jFu4/5Hzwusn3rqts8rFdhcHVfUMhhAhZYVehUOhRAkphyLDe6Tx+WWQlDzXC2iUDa2Y6riJNFgy3m92TrjJs79iWQ8WbnyGAxUs/5qHsQ/iwywBSnKHLeBjhKjU3BSoUir1HefEp9mmEEKT/6+qw25e/PAv7Ok/8VKx08ci2RXyz8iudM0S4WOL2vgilQqEwRwkoxT5P8pSTyXjwhmZvP6i2TPc9evhAOj1xW6MF6NLvMtbSFApFyyA6SozP6NGj5dKlS9u7G4p2xrEzz+ct14CtVxadX7yb/Evu8pXFNiL1pikkXXgKUX17IITAvnE7e55/n9iDhhA9KJvcM27Rte9b+GvI+lsKhSI8hBDLpJRBKd0jeg5KCHEC8DxgBf4rpXyskU0U+zlRvbLoV7QAV0kZ1T8sJG7cCF8ql6yPn2H3KTf4yrBnvnAXJfe/gru0nLTbLyV9mj4dUfTAbLq8fA8QnMMvYfIEJZwUilYmYjUoIYQV2AhMAnKAP4ELpJTBZSZRGpQiPFzllbiK9xDVtydCCFzlHu+9wFx6RlR+/AOF1z8MeIRd/IRDWrWvCsX+wr6oQY0BNksptwIIIWYBpwGGAkqhCAdrSpJOGIUjmBpIOud4TwE4q9VXD0uhULQekSygugO7NN9zgMj3e1Z0aOIOP6jxRgqFokWIZC8+IwO/zh4phLhaCLFUCLG0qKiojbqlUCgUirYgkgVUDtBT870HoKuvIKV8XUo5Wko5OjMzE4VCoVB0HCJZQP0JDBBC9BFCRAPnA1+2c58UCoVC0UZE7ByUlNIphLgR+AGPm/lbUso1jWymUCgUig5CxAooACnlt8C3jTZUKBQKRYcjkk18CoVCodiPUQJKoVAoFBGJElAKhUKhiEiUgFIoFApFRKIElEKhUCgikohNFttUhBBFwI4W2l0noLiF9rU/oK5X01DXq2mo69V09rVr1ltKGZRtocMIqJZECLHUKLOuwhh1vZqGul5NQ12vptNRrpky8SkUCoUiIlECSqFQKBQRiRJQxrze3h3Yx1DXq2mo69U01PVqOh3imqk5KIVCoVBEJEqDUigUCkVEogSUQqFQKCKSiBdQQoieQohfhBDrhBBrhBC3eJenCyHmCCE2ef+naba5SwixWQixQQhxvGb5eUKIv737eSLEMQ8WQqzy7uMFIYTwLj9SCLFcCOEUQpwdYvsYIcSH3u0XCyGyNet6CSF+9J7PWu26liDCrldvIcRP3n3ME0L0MNne8Lp6t18mhFjh7cO1LXGNDI7fpGsmhMjwtq8SQrwUzrUwOKbZNbtMCFHkPecVQoipJtvf5r1//vZe496add8LIcqEEF+31DUKOHZLXq9HhBC7hBBVjRxzb5/JUNcrop7JFrpehu1EiHdTOO3a6pn0IaWM6D8gCzjI+zkJ2AgMBZ4ApnmXTwMe934eCqwEYoA+wBY89aQygJ1AprfdO8CxJsdcAhyKp+z8d8CJ3uXZwHDgXeDsEH2+HviP9/P5wIeadfOASd7PiUB8B75eHwOXej8fA/zPZHvD6wpEAzGaa7Ud6BYB91gCcDhwLfBSONeiCdfsssB9mmx/dMO9A1wXcI8dC0wGvo6QZzLU9Rrn3V9VI8fc22cy1PWaR2Q9ky1xvQzbEeLdFE472uiZ9PWjtXbcah2GL4BJwAYgS3MDbPB+vgu4S9P+B++NfQgwV7P8YuAVk5tpveb7BcBrAW1mNPIw/AAc6v1swxPRLbw35W/7y/UC1gA9vJ8FUNFIX02vK36B2WoPQ7jXTNPuMu0LJJx7J4xrpttnmP0dBSwMWDaBVhJQLXW9AtaZvnBb4pk0u16R+Ezu7fUK1Q6Td5PBdo22a4tnMuJNfFq8auYoYDHQRUqZB+D939nbrDuwS7NZjnfZZmCwECJbCGEDTgd6Ghymu3ebwO2bgq8PUkonUI7nxxwIlAkhPhNC/CWEeFIIYW3ivsMmAq7XSuAs7+czgCQhREYTz6GnEOJvbx8fl1LmNmX7phLmNTMj3HunsXZneU1RnwghjK55IFfi0SranL28XuHSEs+kFu31isRnsjUxezeF3a4tn8l9RkAJIRKBT4FbpZQVoZoaLJNSyj14VXtgAR7V1Bnu9k3rrek+bMARwB14NJS+eEZJLU6EXK87gKOEEH8BRwG7TfZhipRyl5RyONAfuFQI0aUp2zeFJlwz010YLDO6d0K1+wrI9p7zXDymVfMDCnERMBp4sgn9bBFa4HqFfSiDZc2KjzG4XpH4TLYme32PtuUzuU8IKCFEFJ4f9n0p5WfexQVCiCzv+iyg0Ls8B/1IvweQCyCl/EpKOVZKeSge9XqTEMKqmZB+0Lt9D6PtQ/TvkYZ9BPbBq32kAKXe5X9JKbd6RyWzgYOadjUaJ1Kul5QyV0p5ppRyFHCPd1m5wfVqFO8obQ2el0mL08RrZobhtWjiNSuRUtZ7l78BHOw9ftA1E0JMxHNdT9Vs0ya00PUy23drPJNm1ysSn8mm7jvweoXC8N3UhHeYj9Z+JhsOEtF/eCT5u8BzAcufRD/B+IT38zD0k/5bAat3XWfv/zRgBTDQ5Jh/4plkbJiQPSlg/QxCz0HdgH6C8SPvZ6u3bw2OB28DN3TU64Uno7LF+/kR4MFG+q67rnheRHGaPmwEDmzve0yz/jKCJ7FD3jthXLMsTZszgEUm24/C49AywGT9BFrPSaLFrpdmXWOT/nv7TBper0h8Jlviepm1w+TdZLCd2TusTZ5JXz9aa8ct+OMejke1/BvPS3IFcBIee+hPwCbv/3TNNvd4b8YNaLyogJnAWu/f+SGOORpY7d3HS/gzbhyCZ2RRDZQAa0y2j8XjwbYZj/dRX826Sd5zWeV9qKI78PU623u8jcB/8Xr/GGxveF0112ql9//VEXSPbcczoqzy9n1oqGvRhGv2KJ5R6UrgF2CwyfZzgQJNf7/UrFsAFAG13r4dH8HX6wnvd7f3//2t9EyGul6R+Ezu7fUybEeId1PA9obtaKNnsuFPpTpSKBQKRUSyT8xBKRQKhWL/QwkohUKhUEQkSkApFAqFIiJRAkqhUCgUEYkSUAqFQqGISJSAUigiBG926Ant3Q+FIlKwtXcHFIr9hYDSB/FAPeDyfr9GSjms7XulUEQuKg5KoWgHhBDbgalSyrnt3ReFIlJRJj6FIkIQQmz35otDCHG/EOJjIcR7QohK4SnWN1B4iksWeovRHafZNkUI8aYQIk8IsVsI8XBrZuVWKNoCJaAUishlMvA/PDnP/sJTo8eCpxTCg8Brmrbv4MkU3x9P3rnjAMNqvArFvoISUApF5LJASvmD9GTZ/hjIBB6TUjqAWUC2ECLVW+7gRDxlHKqllIXAs3iSfCoU+yzKSUKhiFwKNJ9rgWIppUvzHTxlt7sBUUCeEL4yPhb0hSgVin0OJaAUin2fXXg8Ajt5tS2FokOgTHwKxT6O9JQL/xF4WgiRLISwCCH6CSGOau++KRR7gxJQCkXH4BIgGk/trj3AJ0BWu/ZIodhLVByUQqFQKCISpUEpFAqFIiJRAkqhUCgUEYkSUAqFQqGISJSAUigUCkVEogSUQqFQKCISJaAUCoVCEZEoAaVQKBSKiEQJKIVCoVBEJP8P++CANjpRAPsAAAAASUVORK5CYII=\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "gaugei = 0\n", + "plotstart = \"2009-01-01\"\n", + "plotend = \"2011-12-31\"\n", + "Coello.plotHydrograph(plotstart, plotend, gaugei, Title=\"Lumped Model\")" + ] + }, + { + "cell_type": "markdown", + "id": "6193fb9c", + "metadata": {}, + "source": [ + "### Save Results" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "88e8fae6", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-02-24 00:25:14.873 | DEBUG | catchment:saveResults:1366 - Data is saved successfully\n" + ] + } + ], + "source": [ + "StartDate = \"2009-01-01\"\n", + "EndDate = \"2010-04-20\"\n", + "\n", + "Path = SaveTo + \"Results-Lumped-Model_\" + str(dt.datetime.now())[0:10] + \".txt\"\n", + "Coello.saveResults(Result=5, start=StartDate, end=EndDate, Path=Path)" + ] + } + ], + "metadata": { + "kernelspec": { + "name": "pycharm-e2d4c152", + "language": "python", + "display_name": "PyCharm (pythonProject)" + }, + "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.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/examples/hydrological-model/Note books/lumped-model-run-coello.ipynb b/examples/hydrological-model/Note books/lumped-model-run-coello.ipynb index 523aeaf93..3a51230a1 100644 --- a/examples/hydrological-model/Note books/lumped-model-run-coello.ipynb +++ b/examples/hydrological-model/Note books/lumped-model-run-coello.ipynb @@ -1,431 +1,427 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "a364d52f-69a7-475b-933d-89650d591a05", - "metadata": {}, - "source": [ - "# Lumped Conceptual Model" - ] - }, - { - "cell_type": "markdown", - "id": "5ec32bfb-e0a3-47c1-9371-b9225ee110e0", - "metadata": {}, - "source": [ - "- please change the directory to the root directory of the repo" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "e6b2629f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": "'C:\\\\MyComputer\\\\01Algorithms\\\\hydrology\\\\Hapi'" - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import os\n", - "\n", - "os.chdir(\"../../../\")\n", - "os.getcwd()" - ] - }, - { - "cell_type": "markdown", - "source": [ - "### make sure the above path refers to the root directory of the repo\n", - "\u251c\u2500\u2500 Hapi\n", - "\u2502 \u251c\u2500\u2500 Examples\n", - "\u2502 \u2502 \u251c\u2500\u2500 data\n", - "\u2502 \u2502 \u251c\u2500\u2500 GIS\n", - "\u2502 \u2502 \u251c\u2500\u2500 Hydrological model\n", - "\u2502 \u2502 \u2502 \u251c\u2500\u2500 data\n", - "\u2502 \u2502 \u2502 \u251c\u2500\u2500 Note books\n", - "\u2502 \u2502 \u2502 \u2502 \u251c\u2500\u2500 lumped-model-run-coello.ipynb (current file)" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%% md\n" - } - } - }, - { - "cell_type": "markdown", - "id": "0c51f000", - "metadata": {}, - "source": [ - "### Import Modules" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "efd94b20", - "metadata": {}, - "outputs": [], - "source": [ - "import datetime as dt\n", - "\n", - "import Hapi.rrm.hbv_bergestrom92 as HBVLumped\n", - "import Hapi.sm.performancecriteria as PC\n", - "from Hapi.catchment import Catchment\n", - "from Hapi.rrm.routing import Routing\n", - "from Hapi.run import Run" - ] - }, - { - "cell_type": "markdown", - "id": "883d3c98", - "metadata": {}, - "source": [ - "### Paths" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "78d8611e", - "metadata": {}, - "outputs": [], - "source": [ - "Parameterpath = \"Examples/Hydrological model/data/lumped_model/Coello_Lumped2021-03-08_muskingum.txt\"\n", - "MeteoDataPath = \"Examples/Hydrological model/data/lumped_model/meteo_data-MSWEP.csv\"\n", - "\n", - "Path = \"Examples/Hydrological model/data/lumped_model/\"\n", - "SaveTo = \"Examples/Hydrological model/data/lumped_model/\"" - ] - }, - { - "cell_type": "markdown", - "id": "85e3c2f9", - "metadata": {}, - "source": [ - "### Meteorological data" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "5812a7f5", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-02-24 00:24:16.724 | DEBUG | catchment:readLumpedInputs:635 - Lumped Model inputs are read successfully\n" - ] - } - ], - "source": [ - "start = \"2009-01-01\"\n", - "end = \"2011-12-31\"\n", - "name = \"Coello\"\n", - "Coello = Catchment(name, start, end)\n", - "Coello.readLumpedInputs(MeteoDataPath)" - ] - }, - { - "cell_type": "markdown", - "id": "eca51f8c-de23-4743-9e80-0ea3497a17b5", - "metadata": {}, - "source": [ - "### Lumped model" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "e99e1b85", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-02-24 00:24:19.308 | DEBUG | catchment:readLumpedModel:593 - Lumped model is read successfully\n" - ] - } - ], - "source": [ - "# catchment area\n", - "AreaCoeff = 1530\n", - "# [Snow pack, Soil moisture, Upper zone, Lower Zone, Water content]\n", - "InitialCond = [0, 10, 10, 10, 0]\n", - "\n", - "Coello.readLumpedModel(HBVLumped, AreaCoeff, InitialCond)" - ] - }, - { - "cell_type": "markdown", - "id": "38e7ae6a-d43a-4fc0-9985-4dd69b5f84e1", - "metadata": {}, - "source": [ - "### Model Parameters" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "bb1d0450-e973-44af-88af-f6f8e44c1783", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-02-24 00:24:21.601 | DEBUG | catchment:readParameters:539 - Parameters are read successfully\n" - ] - } - ], - "source": [ - "Snow = 0 # no snow subroutine\n", - "Coello.readParameters(Parameterpath, Snow)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "256545fe-9c7c-4628-b559-f43a307c5db4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": "[0.7,\n 51.1726422,\n 1.147999,\n 0.1,\n 0.88137,\n 0.82353,\n 0.35651,\n 0.03223,\n 47.426,\n 5.2744,\n 1.0,\n 0.2]" - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "Coello.Parameters" - ] - }, - { - "cell_type": "markdown", - "id": "602e4629", - "metadata": {}, - "source": [ - "### Observed flow" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "54555e66", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-02-24 00:24:26.270 | DEBUG | catchment:readDischargeGauges:781 - Gauges data are read successfully\n" - ] - } - ], - "source": [ - "Coello.readDischargeGauges(Path + \"Qout_c.csv\", fmt=\"%Y-%m-%d\")" - ] - }, - { - "cell_type": "markdown", - "id": "60f825cc-49ee-4680-b8cb-901bd11774ec", - "metadata": {}, - "source": [ - "- the discharge data should be stored in the text file with the date stored in the first column and the discharge values in the second column" - ] - }, - { - "cell_type": "markdown", - "id": "894ecdc8", - "metadata": {}, - "source": [ - "### Routing" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "f80b814a", - "metadata": {}, - "outputs": [], - "source": [ - "# RoutingFn = Routing.TriangularRouting2\n", - "RoutingFn = Routing.Muskingum_V\n", - "Route = 1" - ] - }, - { - "cell_type": "markdown", - "id": "560380a3-6dd5-44a5-b9c4-8d65e53d5a5f", - "metadata": {}, - "source": [ - "### Run The Model" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "c4f9c7fc-c087-4fef-be5c-f970e1f13f68", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model Run has finished\n" - ] - } - ], - "source": [ - "Run.runLumped(Coello, Route, RoutingFn)" - ] - }, - { - "cell_type": "markdown", - "id": "3b30a30b", - "metadata": {}, - "source": [ - "### Calculate performance criteria" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "7e1a0414", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "RMSE= 24.59\n", - "NSE= 0.12\n", - "NSEhf= 0.21\n", - "KGE= 0.56\n", - "WB= 96.59\n" - ] - } - ], - "source": [ - "Metrics = dict()\n", - "\n", - "# gaugeid = Coello.QGauges.columns[-1]\n", - "Qobs = Coello.QGauges['q']\n", - "\n", - "Metrics['RMSE'] = PC.RMSE(Qobs, Coello.Qsim['q'])\n", - "Metrics['NSE'] = PC.NSE(Qobs, Coello.Qsim['q'])\n", - "Metrics['NSEhf'] = PC.NSEHF(Qobs, Coello.Qsim['q'])\n", - "Metrics['KGE'] = PC.KGE(Qobs, Coello.Qsim['q'])\n", - "Metrics['WB'] = PC.WB(Qobs, Coello.Qsim['q'])\n", - "\n", - "print(\"RMSE= \" + str(round(Metrics['RMSE'], 2)))\n", - "print(\"NSE= \" + str(round(Metrics['NSE'], 2)))\n", - "print(\"NSEhf= \" + str(round(Metrics['NSEhf'], 2)))\n", - "print(\"KGE= \" + str(round(Metrics['KGE'], 2)))\n", - "print(\"WB= \" + str(round(Metrics['WB'], 2)))" - ] - }, - { - "cell_type": "markdown", - "id": "da4641e2", - "metadata": {}, - "source": [ - "### Plot Hydrograph" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "17053377", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": "(
,\n )" - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "text/plain": "
", - "image/png": "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3ooQghkzZrRPxxQKRRAVM7/FsS0HpKTo9ifbuztBKAGlaHEGDhzIO++84/vudDr5+OOP6devXzv2SqFQBOIq3tPeXQiJElARymWXXca//vUv3/d58+bRo0cP3/fs7GyefPJJhg8fTkJCAldeeSUFBQWceOKJJCUlMXHiRPbs8dx8DWav119/nW7dupGVlcXTTz/t25fb7eaxxx6jX79+ZGRkcO6551JaWupb/7///Y/evXuTkZHBI4880mjfJ0+ezMKFC33H//777xk+fDhdu3bVHfPhhx+md+/edO7cmUsuuYTy8vKwjtlYfxUKRZhEeKKG/VJA3f/BUsTk11vkb/KD37fbeXz66afMmTOHjRs38tVXX3HiiSfy73//m+LiYtxuNy+88IKu/S+//MKmTZv48ccfeeyxx3ymxRdeeIHZs2czf/58cnNzSUtL44YbbgBg7dq1XHfddfzvf/8jNzeXkpIScnJyQvYrNjaWU089lVmzZgHw7rvvcskll+jazJgxgxkzZvDLL7+wdetWqqqquPHGG8M6Zqj+KhSKjsN+KaA6CjfddBNdunShe/fuHHHEEYwdO5ZRo0YRExPDGWecwV9//aVrf99995GQkMCBBx7I5ZdfzsyZMwF47bXXeOSRR+jRowcxMTHcf//9fPLJJzidTj755BNOOeUUjjzySGJiYnjooYewWBq/bS655BLeffddysvLmT9/Pqeffrpu/fvvv89tt91G3759SUxM5NFHH2XWrFlhHTNUfxUKRcehw6c66sh06dLF9zkuLi7oe1VVla59z57+Cia9e/dm1apVAOzYsYMzzjhDJwSsVisFBQXk5ubqtktISCAjI6PRvh1++OEUFRXx8MMPc8oppwQFS+fm5tK7d29df5xOZ1jHDNVfhULRcdgvBdT9U0Zz/5SgvIQRRUJCAjU1Nb7v+fn5e73PXbt2MXjwYAB27txJt27dAI/geuuttzjssMOCtsnKymLdunW+7zU1NZSUlIR1vIsuuogHH3yQX375JWhdt27d2LHDX0Rz586d2Gw2unTp0ugxQ/V3+/btYfVNoVBEPsrEFwE4HA7q6up8f06nk5EjR/Ltt99SWlpKfn4+zz333F4f56GHHqKmpoY1a9bw9ttvc9555wFw7bXXcs899/gERlFREV984SnNdfbZZ/P111/z22+/YbfbmT59Om63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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "gaugei = 0\n", - "plotstart = \"2009-01-01\"\n", - "plotend = \"2011-12-31\"\n", - "Coello.plotHydrograph(plotstart, plotend, gaugei, Title=\"Lumped Model\")" - ] - }, - { - "cell_type": "markdown", - "id": "6193fb9c", - "metadata": {}, - "source": [ - "### Save Results" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "88e8fae6", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2022-02-24 00:25:14.873 | DEBUG | catchment:saveResults:1366 - Data is saved successfully\n" - ] - } - ], - "source": [ - "StartDate = \"2009-01-01\"\n", - "EndDate = \"2010-04-20\"\n", - "\n", - "Path = SaveTo + \"Results-Lumped-Model_\" + str(dt.datetime.now())[0:10] + \".txt\"\n", - "Coello.saveResults(Result=5, start=StartDate, end=EndDate, Path=Path)" - ] - } - ], - "metadata": { - "kernelspec": { - "name": "pycharm-cd49064f", - "language": "python", - "display_name": "PyCharm (Hapi)" - }, - "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.8.10" - } + "cells": [ + { + "cell_type": "markdown", + "id": "a364d52f-69a7-475b-933d-89650d591a05", + "metadata": {}, + "source": [ + "# Lumped Conceptual Model" + ] + }, + { + "cell_type": "markdown", + "id": "5ec32bfb-e0a3-47c1-9371-b9225ee110e0", + "metadata": {}, + "source": [ + "- please change the directory to the root directory of the repo" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e6b2629f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "'C:\\\\MyComputer\\\\01Algorithms\\\\hydrology\\\\Hapi'" + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import os\n", + "\n", + "os.chdir(\"../../../\")\n", + "os.getcwd()" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### make sure the above path refers to the root directory of the repo\n", + "├── Hapi\n", + "│ ├── Examples\n", + "│ │ ├── data\n", + "│ │ ├── GIS\n", + "│ │ ├── Hydrological model\n", + "│ │ │ ├── data\n", + "│ │ │ ├── Note books\n", + "│ │ │ │ ├── lumped-model-run-coello.ipynb (current file)" + ], + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + } + }, + { + "cell_type": "markdown", + "id": "0c51f000", + "metadata": {}, + "source": [ + "### Import Modules" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "efd94b20", + "metadata": {}, + "outputs": [], + "source": [ + "import datetime as dt\n", + "\n", + "import Hapi.rrm.hbv_bergestrom92 as HBVLumped\n", + "import Hapi.sm.performancecriteria as PC\n", + "from Hapi.catchment import Catchment\n", + "from Hapi.rrm.routing import Routing\n", + "from Hapi.run import Run" + ] + }, + { + "cell_type": "markdown", + "id": "883d3c98", + "metadata": {}, + "source": [ + "### Paths" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "78d8611e", + "metadata": {}, + "outputs": [], + "source": [ + "Parameterpath = \"Examples/Hydrological model/data/lumped_model/Coello_Lumped2021-03-08_muskingum.txt\"\n", + "MeteoDataPath = \"Examples/Hydrological model/data/lumped_model/meteo_data-MSWEP.csv\"\n", + "\n", + "Path = \"Examples/Hydrological model/data/lumped_model/\"\n", + "SaveTo = \"Examples/Hydrological model/data/lumped_model/\"" + ] + }, + { + "cell_type": "markdown", + "id": "85e3c2f9", + "metadata": {}, + "source": [ + "### Meteorological data" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "5812a7f5", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-02-24 00:24:16.724 | DEBUG | catchment:readLumpedInputs:635 - Lumped Model inputs are read successfully\n" + ] + } + ], + "source": [ + "start = \"2009-01-01\"\n", + "end = \"2011-12-31\"\n", + "name = \"Coello\"\n", + "Coello = Catchment(name, start, end)\n", + "Coello.readLumpedInputs(MeteoDataPath)" + ] + }, + { + "cell_type": "markdown", + "id": "eca51f8c-de23-4743-9e80-0ea3497a17b5", + "metadata": {}, + "source": [ + "### Lumped model" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "e99e1b85", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-02-24 00:24:19.308 | DEBUG | catchment:readLumpedModel:593 - Lumped model is read successfully\n" + ] + } + ], + "source": [ + "# catchment area\n", + "AreaCoeff = 1530\n", + "# [Snow pack, Soil moisture, Upper zone, Lower Zone, Water content]\n", + "InitialCond = [0, 10, 10, 10, 0]\n", + "\n", + "Coello.readLumpedModel(HBVLumped, AreaCoeff, InitialCond)" + ] + }, + { + "cell_type": "markdown", + "id": "38e7ae6a-d43a-4fc0-9985-4dd69b5f84e1", + "metadata": {}, + "source": [ + "### Model Parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "bb1d0450-e973-44af-88af-f6f8e44c1783", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-02-24 00:24:21.601 | DEBUG | catchment:readParameters:539 - Parameters are read successfully\n" + ] + } + ], + "source": [ + "Snow = 0 # no snow subroutine\n", + "Coello.readParameters(Parameterpath, Snow)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "256545fe-9c7c-4628-b559-f43a307c5db4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "[0.7,\n 51.1726422,\n 1.147999,\n 0.1,\n 0.88137,\n 0.82353,\n 0.35651,\n 0.03223,\n 47.426,\n 5.2744,\n 1.0,\n 0.2]" + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Coello.Parameters" + ] + }, + { + "cell_type": "markdown", + "id": "602e4629", + "metadata": {}, + "source": [ + "### Observed flow" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "54555e66", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-02-24 00:24:26.270 | DEBUG | catchment:readDischargeGauges:781 - Gauges data are read successfully\n" + ] + } + ], + "source": [ + "Coello.readDischargeGauges(Path + \"Qout_c.csv\", fmt=\"%Y-%m-%d\")" + ] + }, + { + "cell_type": "markdown", + "id": "60f825cc-49ee-4680-b8cb-901bd11774ec", + "metadata": {}, + "source": [ + "- the discharge data should be stored in the text file with the date stored in the first column and the discharge values in the second column" + ] + }, + { + "cell_type": "markdown", + "id": "894ecdc8", + "metadata": {}, + "source": [ + "### Routing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f80b814a", + "metadata": {}, + "outputs": [], + "source": "# RoutingFn = Routing.triangular_routing_2\nRoutingFn = Routing.muskingum_v\nRoute = 1" + }, + { + "cell_type": "markdown", + "id": "560380a3-6dd5-44a5-b9c4-8d65e53d5a5f", + "metadata": {}, + "source": [ + "### Run The Model" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "c4f9c7fc-c087-4fef-be5c-f970e1f13f68", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model Run has finished\n" + ] + } + ], + "source": [ + "Run.runLumped(Coello, Route, RoutingFn)" + ] + }, + { + "cell_type": "markdown", + "id": "3b30a30b", + "metadata": {}, + "source": [ + "### Calculate performance criteria" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "7e1a0414", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "RMSE= 24.59\n", + "NSE= 0.12\n", + "NSEhf= 0.21\n", + "KGE= 0.56\n", + "WB= 96.59\n" + ] + } + ], + "source": [ + "Metrics = dict()\n", + "\n", + "# gaugeid = Coello.QGauges.columns[-1]\n", + "Qobs = Coello.QGauges['q']\n", + "\n", + "Metrics['RMSE'] = PC.RMSE(Qobs, Coello.Qsim['q'])\n", + "Metrics['NSE'] = PC.NSE(Qobs, Coello.Qsim['q'])\n", + "Metrics['NSEhf'] = PC.NSEHF(Qobs, Coello.Qsim['q'])\n", + "Metrics['KGE'] = PC.KGE(Qobs, Coello.Qsim['q'])\n", + "Metrics['WB'] = PC.WB(Qobs, Coello.Qsim['q'])\n", + "\n", + "print(\"RMSE= \" + str(round(Metrics['RMSE'], 2)))\n", + "print(\"NSE= \" + str(round(Metrics['NSE'], 2)))\n", + "print(\"NSEhf= \" + str(round(Metrics['NSEhf'], 2)))\n", + "print(\"KGE= \" + str(round(Metrics['KGE'], 2)))\n", + "print(\"WB= \" + str(round(Metrics['WB'], 2)))" + ] + }, + { + "cell_type": "markdown", + "id": "da4641e2", + "metadata": {}, + "source": [ + "### Plot Hydrograph" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "17053377", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": "(
,\n )" + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" }, - "nbformat": 4, - "nbformat_minor": 5 -} + { + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAFgCAYAAADuCe0ZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAACXkUlEQVR4nO2dd3gU1drAf2d303tCgFBDb0pRBMSGCnbsFbtir1f9vKhX7Nfe21Wvil4V7NgLqCCigIAgvbeQnpBetp3vj93szuzObDYhZQnn9zx5sjtzZubM7My8533PW4SUEoVCoVAoIg1Le3dAoVAoFAojlIBSKBQKRUSiBJRCoVAoIhIloBQKhUIRkSgBpVAoFIqIRAkohUKhUEQkSkApFPsYQogZQggphMhu7740FyHEdiHE9hbYjxRCzNv7HikiESWgFBGB90WjgvJaAY1Ak0KIB0K0u1TTbl4bdlGhMEQJKIVi/8EJXCGEsJqsv8rbRqGICJSAUij2H74GegAnBK4QQgwBDgO+autOKRRmKAGl2KcQQtzvNUFNMFiX7V03I2B5g4mrjxDiRiHEWiFEnXce5G4hhPC2O0cIsUQIUS2EKBRCvCSEiDU4jhRCzBNCdBNC/M/btlYIsUwIMSVE348XQnwrhCgWQtQLIbYIIZ4UQqSatJ8ohFjg7U+pEGK2EGJw066YjveBWjyaUiANy/4bov8xQohpQoi/hRA1QogKb//ONWkvvNd7jfd67/Ze05RQnRRCXCCE+EUIsce73TohxL+EEDHhnqiiY2Br7w4oFG3IU8AEPFrCj8CpwCNAtBCiFHgMmA0sACYBNwBW4DqDfaUBvwNlwNtAKnAu8L4QoruU8kltYyHEdOABoBSPJlMIDAfuAE4SQhwqpazQtD8b+BCwe//nAYcDfwB/N/P8y4CPgSlCiCwpZZ73WDHAJcB8YKPRhkKIaOAH4ChgPfAyEA+cDXwohBgppbw7YLPngJu9fX8dcACnAWOBaO+5BR7nTeAKIAf4zNvnccBDwLFCiElSSmWG3F+QUqo/9dfuf4D03I6Ntrvf23aCwbps77oZActneJdvB7prlqcCxUA1UAQM0ayLAdYC9UBno74CHwEWzfI+eASQHeirWX60t/3vQGrAvi7zrntWsywRKMHzQh8d0P5ZzfGzw7y2Dec/EY+Qk8BdmvXne5ddCPT3fp4XsI+7vMu/BWya5Z2911UC4zXLx3uXbQbSNctj8QhZCWw3uRafAXEmv/stBr/FvHCug/rb9/6UiU+xP/GQlHJ3wxcpZRnwJR5N4FUp5TrNuno8mks0MMRgXy7gn1JKt2abbcALQBRwsabtzd7/V3mPiWabGcAKPMKhgdOAdOADKeXSgOPeD5SHPMsQSCl/A9YBUxtMm3jMe3uAT0NsegUeYXCb1GgwUspCPNoNwFRN+8u9/x+RUpZq2tfhEXZG3ILXkUNKWRuw7iE8QvvCoK0UHRZl4lPsTwS+7AFyvf+XGaxrEGY9DNbt9AqkQOYB9wGjNMsOxaMNnSOEOMdgm2ggUwiRIaUsAQ7yLp8f2FBKWS6EWIHH1NZc/gs8DRwjhNiBR8N7UUpZ55dZfoQQSXg0q91SyvUG+/vZ+197zqbngMeEqjPTCSHigRF4NNpbjfqBR5s1GiwoOihKQCn2J4w0D2cY66IM1hWYHCPf+1/rCJCB51m7r5H+NZj2GrZt7BjN5V3g33g0nh2AAN4I0b6hP3km6xuWpxpsE3QOUkqXEKIkYHGatx+ZNH6dFPsJSkAp9jUaTGpG925qG/aji8nyrt7/WoFXjmeuKj3MfTds29gxmoWUslgI8TlwBlAB/CGlXB1Gf8yOmxXQTvu5C7BV29gbh5WBX0PVtv9LSnkQCgXKzVyx77HH+7+nwbrRbdiPXiaphiZ4//+lWbYISBNCDAtz38u9/4PMeF4X7ZFh7icUb+BxBMkktPaElLIS2AJ0F0IMMGhytPf/cs0y03MAjiBggCGlrALWAMOEEOEKckUHRwkoxb7GEu//y4UQvpecEKInML0N+2EFHhdC+J4hIUQfPA4RTuA9Tdtnvf/fEEJ0C9yRECJBCDFOs+gLPIJ4ihAiUOjej9582Fx+weOMcQYwK4z2b+ExwT2pzUQhhOgE3Ktp08AM7/97tALHG1f2qMkxnsEzH/eWUWyYECJNCKG0q/0IZeJTRBSBQbYBXC+lXCyE+BU4ElgihPgZjxlpMp44HSPNqjX4G088zzIhxI94hMZ5eMyMd0optzQ0lFL+JISYhufFvEkI8S2wDc+cU288WsZveDM8SCmrhBBX4/EiXCCE0MZBHQA0nH+zkVJKPB6M4fIUcCIeobbSew7xwDl4XM2f8HoINux/oRDiReAmYLUQ4hP8cVB7MJjPklK+JYQ4GLge2CKE+AHYicejsQ+ec34buLaJp6vYV2lvP3f1p/6k1MUWhfpL9bZNxWOWKsTj2bUauJrG46CyDY57P+ZxVZd5111m0Nd5QDc8mlIhUIfHrDUlxDkejid2KhdPrFQRHhfzZwiId/K2n4RHcNXgeal/AQwOdT4mx21oPzGMtoZxUN51scDd3utdC1R6+3eByb4EcCMet/Z673m/jEeYbycgDkqz3Sn4g5nteJxClgAPA4ONfov2vn/VX+v8Ce+PrFAowkR4sq7Pl1JOaO++KBQdGTUHpVAoFIqIRAkohUKhUEQkbSKghBCx3izRK72ZjR/wLk8XQswRQmzy/k/TbHOXEGKzEGKDEOL4tuinQqFQKCKHNpmD8ub8SpAe76QoPBOrtwBnAqVSyse8Xk5pUsp/CiGGAjOBMXgmoucCA6WUrlbvrEKhUCgigjZxM5ceKVjl/Rrl/ZN4XE4neJe/g8cz6p/e5bOkJ2HnNiHEZjzC6g+zY3Tq1ElmZ2e3Qu8VCoVC0ZosW7asWEqZGbi8zeKgvMF9y/C4sb4sPfEsXaS3Jo2UMk8I0dnbvDue6PsGcrzLTMnOzmbpUqNcoAqFQqGIZLxJi4NoMycJKaVLSjkST2boMUKIA0I0N0plHGSLFEJcLYRYKoRYWlRU1EI9VSgUCkUk0OZefNJTD2cenqj5AiFEFoD3f6G3WQ76jAA98JdF0O7rdSnlaCnl6MzMIO1QoVAoFPswbeXFl9mQW0sIEYensud6PKlWLvU2uxRPpDze5ecLIWK8+c0G4M/BplAoFIr9gLaag8oC3vHOQ1mAj6SUXwsh/gA+EkJciSfn1jkAUso1QoiP8JTcdgI3KA8+hUKh2L/oMKmORo8eLc2cJCoqKigsLMThcLRxrxSRQlRUFJ07dyY5Obm9u6JQKAIQQiyTUgaVy+nw2cwrKiooKCige/fuxMXFYVJKWtGBkVJSW1vL7t2e+nhKSCkU+wYdPtVRYWEh3bt3Jz4+Xgmn/RQhBPHx8XTv3p3CwsLGN1AoFBFBhxdQDoeDuLi49u6GIgKIi4tTZl6FYh+iwwsoQGlOCkDdBwrFvsZ+IaAUCoVCYYx0OnHmF7d3NwxRAkrRZLKzs5k7d25EHnP79u0IIXA6nW3QK4Vi30baHewafzE7hp9Jxbtftnd3glACqp1pj5d9a3LZZZchhODLL/U3+6233ooQghkzZrRPxxQKRRAVM7/FsS0HpKTo9ifbuztBKAGlaHEGDhzIO++84/vudDr5+OOP6devXzv2SqFQBOIq3tPeXQiJElARymWXXca//vUv3/d58+bRo0cP3/fs7GyefPJJhg8fTkJCAldeeSUFBQWceOKJJCUlMXHiRPbs8dx8DWav119/nW7dupGVlcXTTz/t25fb7eaxxx6jX79+ZGRkcO6551JaWupb/7///Y/evXuTkZHBI4880mjfJ0+ezMKFC33H//777xk+fDhdu3bVHfPhhx+md+/edO7cmUsuuYTy8vKwjtlYfxUKRZhEeKKG/VJA3f/BUsTk11vkb/KD37fbeXz66afMmTOHjRs38tVXX3HiiSfy73//m+LiYtxuNy+88IKu/S+//MKmTZv48ccfeeyxx3ymxRdeeIHZs2czf/58cnNzSUtL44YbbgBg7dq1XHfddfzvf/8jNzeXkpIScnJyQvYrNjaWU089lVmzZgHw7rvvcskll+jazJgxgxkzZvDLL7+wdetWqqqquPHGG8M6Zqj+KhSKjsN+KaA6CjfddBNdunShe/fuHHHEEYwdO5ZRo0YRExPDGWecwV9//aVrf99995GQkMCBBx7I5ZdfzsyZMwF47bXXeOSRR+jRowcxMTHcf//9fPLJJzidTj755BNOOeUUjjzySGJiYnjooYewWBq/bS655BLeffddysvLmT9/Pqeffrpu/fvvv89tt91G3759SUxM5NFHH2XWrFlhHTNUfxUKRcehw6c66sh06dLF9zkuLi7oe1VVla59z57+Cia9e/dm1apVAOzYsYMzzjhDJwSsVisFBQXk5ubqtktISCAjI6PRvh1++OEUFRXx8MMPc8oppwQFS+fm5tK7d29df5xOZ1jHDNVfhULRcdgvBdT9U0Zz/5SgvIQRRUJCAjU1Nb7v+fn5e73PXbt2MXjwYAB27txJt27dAI/geuuttzjssMOCtsnKymLdunW+7zU1NZSUlIR1vIsuuogHH3yQX375JWhdt27d2LHDX0Rz586d2Gw2unTp0ugxQ/V3+/btYfVNoVBEPsrEFwE4HA7q6up8f06nk5EjR/Ltt99SWlpKfn4+zz333F4f56GHHqKmpoY1a9bw9ttvc9555wFw7bXXcs899/gERlFREV984SnNdfbZZ/P111/z22+/YbfbmT59Om63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\n" + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "gaugei = 0\n", + "plotstart = \"2009-01-01\"\n", + "plotend = \"2011-12-31\"\n", + "Coello.plotHydrograph(plotstart, plotend, gaugei, Title=\"Lumped Model\")" + ] + }, + { + "cell_type": "markdown", + "id": "6193fb9c", + "metadata": {}, + "source": [ + "### Save Results" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "88e8fae6", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2022-02-24 00:25:14.873 | DEBUG | catchment:saveResults:1366 - Data is saved successfully\n" + ] + } + ], + "source": [ + "StartDate = \"2009-01-01\"\n", + "EndDate = \"2010-04-20\"\n", + "\n", + "Path = SaveTo + \"Results-Lumped-Model_\" + str(dt.datetime.now())[0:10] + \".txt\"\n", + "Coello.saveResults(Result=5, start=StartDate, end=EndDate, Path=Path)" + ] + } + ], + "metadata": { + "kernelspec": { + "name": "pycharm-cd49064f", + "language": "python", + "display_name": "PyCharm (Hapi)" + }, + "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.8.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap-multiobjective-NSE-NSEHF.py b/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap-multiobjective-NSE-NSEHF.py index d17a6fec6..cec9cb466 100644 --- a/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap-multiobjective-NSE-NSEHF.py +++ b/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap-multiobjective-NSE-NSEHF.py @@ -61,7 +61,7 @@ parameters = [] # Routing Route = 1 -RoutingFn = Routing.TriangularRouting1 +RoutingFn = Routing.triangular_routing_1 # outlet discharge Coello.read_discharge_gauges(Path + "Qout_c.csv", fmt="%Y-%m-%d") diff --git a/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap-multiobjective-NSE-RMSE.py b/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap-multiobjective-NSE-RMSE.py index 24153f071..0aaadd03e 100644 --- a/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap-multiobjective-NSE-RMSE.py +++ b/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap-multiobjective-NSE-RMSE.py @@ -63,7 +63,7 @@ parameters = [] # Routing Route = 1 -RoutingFn = Routing.TriangularRouting1 +RoutingFn = Routing.triangular_routing_1 # outlet discharge Coello.read_discharge_gauges(Path + "Qout_c.csv", fmt="%Y-%m-%d") diff --git a/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap.py b/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap.py index 32e593a7f..c879af971 100644 --- a/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap.py +++ b/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration-deap.py @@ -58,7 +58,7 @@ parameters = [] # Routing Route = 1 -RoutingFn = Routing.TriangularRouting1 +RoutingFn = Routing.triangular_routing_1 # outlet discharge Coello.read_discharge_gauges(Path + "Qout_c.csv", fmt="%Y-%m-%d") diff --git a/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration.py b/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration.py index b7ca85cd6..c05f7b9f3 100644 --- a/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration.py +++ b/examples/hydrological-model/coello/calibration/coello-lumped-model-calibration.py @@ -51,7 +51,7 @@ parameters = [] # Routing Route = 1 -RoutingFn = Routing.TriangularRouting1 +RoutingFn = Routing.triangular_routing_1 Basic_inputs = dict(Route=Route, RoutingFn=RoutingFn, InitialValues=parameters) diff --git a/examples/hydrological-model/coello/run/coello-lumped-model-run-maxbas.py b/examples/hydrological-model/coello/run/coello-lumped-model-run-maxbas.py index 7d40cce18..f35b3f405 100644 --- a/examples/hydrological-model/coello/run/coello-lumped-model-run-maxbas.py +++ b/examples/hydrological-model/coello/run/coello-lumped-model-run-maxbas.py @@ -37,8 +37,8 @@ # %% ### Observed flow Coello.read_discharge_gauges(Path + "Qout_c.csv", fmt="%Y-%m-%d") # %% Routing -# RoutingFn = Routing.TriangularRouting2 -RoutingFn = Routing.TriangularRouting1 +# RoutingFn = Routing.triangular_routing_2 +RoutingFn = Routing.triangular_routing_1 Route = 1 # %% ### Run The Model # Coello.Parameters = [1.0171762638840873, diff --git a/examples/hydrological-model/coello/run/coello-lumped-model-run.py b/examples/hydrological-model/coello/run/coello-lumped-model-run.py index 4ba78d1e0..2e2e09d63 100644 --- a/examples/hydrological-model/coello/run/coello-lumped-model-run.py +++ b/examples/hydrological-model/coello/run/coello-lumped-model-run.py @@ -37,8 +37,8 @@ Coello.read_discharge_gauges(path + "Qout_c.csv", fmt="%Y-%m-%d") # %% ### Routing -# RoutingFn = Routing.TriangularRouting2 -RoutingFn = Routing.Muskingum_V +# RoutingFn = Routing.triangular_routing_2 +RoutingFn = Routing.muskingum_v Route = 1 # %% ### Run The Model # Coello.Parameters = [1.0171762638840873, diff --git a/src/hapi/routing.py b/src/hapi/routing.py index b6164d38a..0ba12cd38 100644 --- a/src/hapi/routing.py +++ b/src/hapi/routing.py @@ -20,11 +20,11 @@ class Routing: - **Muskingum routing**: classical linear channel routing using the Muskingum storage equation, available in both iterative - (`Muskingum`) and vectorized (`Muskingum_V`) forms. + (`muskingum`) and vectorized (`muskingum_v`) forms. - **Triangular routing**: MAXBAS-based transfer-function routing that distributes discharge over a triangular weighting kernel. - Two variants are provided: `TriangularRouting1` supports - fractional MAXBAS values; `TriangularRouting2` uses integer + Two variants are provided: `triangular_routing_1` supports + fractional MAXBAS values; `triangular_routing_2` uses integer MAXBAS values. """ @@ -37,7 +37,7 @@ def __init__(self): pass @staticmethod - def Muskingum(inflow, Qinitial, k, x, dt): + def muskingum(inflow, Qinitial, k, x, dt): """Route an inflow hydrograph using the Muskingum method. Applies the Muskingum linear storage routing equation to @@ -67,7 +67,7 @@ def Muskingum(inflow, Qinitial, k, x, dt): >>> import numpy as np >>> from hapi.routing import Routing >>> inflow = np.array([0, 1, 3, 7, 10, 9, 6, 3, 1, 0]) - >>> q_routed = Routing.Muskingum( + >>> q_routed = Routing.muskingum( ... inflow, Qinitial=0, k=2, x=0.2, dt=1 ... ) """ @@ -89,7 +89,7 @@ def Muskingum(inflow, Qinitial, k, x, dt): return outflow @staticmethod - def Muskingum_V( + def muskingum_v( inflow: np.ndarray, Qinitial: int | float, k: int | float, @@ -98,7 +98,7 @@ def Muskingum_V( ) -> np.ndarray: """Route an inflow hydrograph using a vectorized Muskingum method. - This is a performance-optimized variant of `Muskingum` that + This is a performance-optimized variant of `muskingum` that pre-computes the c1 and c2 terms in a vectorized manner before applying the recursive c3 correction. Negative outflow values that would result from the c3 term are suppressed. @@ -124,7 +124,7 @@ def Muskingum_V( >>> import numpy as np >>> from hapi.routing import Routing >>> inflow = np.array([0, 1, 3, 7, 10, 9, 6, 3, 1, 0]) - >>> q_routed = Routing.Muskingum_V( + >>> q_routed = Routing.muskingum_v( ... inflow, Qinitial=0, k=2, x=0.2, dt=1 ... ) """ @@ -147,13 +147,13 @@ def Muskingum_V( return Q @staticmethod - def Tf(maxbas): + def tf(maxbas): """Generate triangular transfer-function weights. Builds a normalized weight array shaped as a triangle with a rising limb for the first half and a falling limb for the second half. The weights sum to 1 and are used by - `TriangularRouting2` to distribute discharge across + `triangular_routing_2` to distribute discharge across ``maxbas`` time steps. Args: @@ -166,7 +166,7 @@ def Tf(maxbas): Examples: >>> from hapi.routing import Routing - >>> weights = Routing.Tf(5) + >>> weights = Routing.tf(5) >>> print(weights.sum()) 1.0 """ @@ -186,14 +186,14 @@ def Tf(maxbas): return wi @staticmethod - def TriangularRouting2(q, maxbas=1): + def triangular_routing_2(q, maxbas=1): """Route discharge using a triangular transfer function (integer MAXBAS). Convolves the input discharge time series with a triangular weighting kernel whose width is determined by ``maxbas``. Only integer values of ``maxbas`` are supported; the value is rounded to the nearest integer internally. Weights are - generated by `Tf`. + generated by `tf`. Args: q (numpy.ndarray): Time series of discharge values to be @@ -212,7 +212,7 @@ def TriangularRouting2(q, maxbas=1): >>> import numpy as np >>> from hapi.routing import Routing >>> q = np.array([0.0, 1.0, 3.0, 7.0, 10.0, 9.0, 6.0]) - >>> q_routed = Routing.TriangularRouting2(q, maxbas=3) + >>> q_routed = Routing.triangular_routing_2(q, maxbas=3) """ # input data validation assert maxbas >= 1, "Maxbas value has to be larger than 1" @@ -221,7 +221,7 @@ def TriangularRouting2(q, maxbas=1): maxbas = int(round(maxbas, 0)) # get the weights - w = Routing.Tf(maxbas) + w = Routing.tf(maxbas) # rout the discharge signal q_r = np.zeros_like(q, dtype="float64") @@ -233,11 +233,11 @@ def TriangularRouting2(q, maxbas=1): return q_r @staticmethod - def CalculateWeights(maxbas): + def calculate_weights(maxbas): """Calculate triangular routing weights for a given MAXBAS value. Computes normalized weights based on the area under an - equilateral-triangle transfer function. Unlike `Tf`, this + equilateral-triangle transfer function. Unlike `tf`, this method supports fractional (non-integer) MAXBAS values by computing exact trapezoidal areas under the triangle curve. @@ -253,7 +253,7 @@ def CalculateWeights(maxbas): Examples: >>> from hapi.routing import Routing - >>> weights = Routing.CalculateWeights(5) + >>> weights = Routing.calculate_weights(5) >>> print(weights) [0.08 0.24 0.36 0.24 0.08] """ @@ -320,12 +320,12 @@ def CalculateWeights(maxbas): return maxbasW @staticmethod - def TriangularRouting1(Q, MAXBAS): + def triangular_routing_1(Q, MAXBAS): """Route discharge using triangular weights (fractional MAXBAS). Distributes the input hydrograph over time using MAXBAS - triangular weights computed by `CalculateWeights`. Unlike - `TriangularRouting2`, this method supports fractional + triangular weights computed by `calculate_weights`. Unlike + `triangular_routing_2`, this method supports fractional (non-integer) MAXBAS values. The routing is performed by constructing a weighted discharge @@ -347,10 +347,10 @@ def TriangularRouting1(Q, MAXBAS): >>> import numpy as np >>> from hapi.routing import Routing >>> Q = np.array([0.0, 1.0, 3.0, 7.0, 10.0, 9.0, 6.0]) - >>> q_out = Routing.TriangularRouting1(Q, MAXBAS=5) + >>> q_out = Routing.triangular_routing_1(Q, MAXBAS=5) """ # CALCULATE MAXBAS WEIGHTS - maxbasW = Routing.CalculateWeights(MAXBAS) + maxbasW = Routing.calculate_weights(MAXBAS) Qw = np.ones((len(Q), len(maxbasW))) # Calculate the matrix discharge diff --git a/src/hapi/rrm/distrrm.py b/src/hapi/rrm/distrrm.py index 80a648603..62f136bfc 100644 --- a/src/hapi/rrm/distrrm.py +++ b/src/hapi/rrm/distrrm.py @@ -146,7 +146,7 @@ def SpatialRouting(Model): depth array used for non-Muskingum methods. """ # # routing lake discharge with DS cell k & x and adding to cell Q - # q_lake=Routing.Muskingum_V(q_lake,q_lake[0],sp_pars[lakecell[0],lakecell[1],10],sp_pars[lakecell[0],lakecell[1],11],p2[0]) + # q_lake=Routing.muskingum_v(q_lake,q_lake[0],sp_pars[lakecell[0],lakecell[1],10],sp_pars[lakecell[0],lakecell[1],11],p2[0]) # q_lake=np.append(q_lake,q_lake[-1]) # # both lake & Quz are in m3/s # #new @@ -198,7 +198,7 @@ def SpatialRouting(Model): y_ind = Model.FDT[str(x) + "," + str(y)][i][1] # sum the Q of the US cells (already routed for its cell) # route first with there own k & xthen sum - q_uzi = q_uzi + routing.Muskingum_V( + q_uzi = q_uzi + routing.muskingum_v( Model.quz_routed[x_ind, y_ind, :], Model.quz_routed[x_ind, y_ind, 0], Model.Parameters[x_ind, y_ind, 10], @@ -242,7 +242,7 @@ def DistMaxbas1(Model): for x in range(Model.rows): for y in range(Model.cols): if not np.isnan(Model.FlowAccArr[x, y]): - Model.quz[x, y, :] = routing.TriangularRouting1( + Model.quz[x, y, :] = routing.triangular_routing_1( Model.quz[x, y, :], Maxbas[x, y] ) @@ -289,7 +289,7 @@ def DistMaxbas2(Model): for x in range(Model.rows): for y in range(Model.cols): if not np.isnan(Model.FPLArr[x, y]): - Model.quz[x, y, :] = routing.TriangularRouting2( + Model.quz[x, y, :] = routing.triangular_routing_2( Model.quz[x, y, :], NormalizedFPL[x, y] ) @@ -476,7 +476,7 @@ def Dist_HBV2( no_cells.sort() # routing lake discharge with DS cell k & x and adding to cell Q - q_lake = routing.Muskingum_V( + q_lake = routing.muskingum_v( q_lake, q_lake[0], sp_pars[lakecell[0], lakecell[1], 10], @@ -510,7 +510,7 @@ def Dist_HBV2( y_ind = flow_acc[str(x) + "," + str(y)][i][1] # sum the Q of the US cells (already routed for its cell) # route first with there own k & xthen sum - q_r = q_r + routing.Muskingum_V( + q_r = q_r + routing.muskingum_v( quz_routed[x_ind, y_ind, :], quz_routed[x_ind, y_ind, 0], sp_pars[x_ind, y_ind, 10], diff --git a/src/hapi/wrapper.py b/src/hapi/wrapper.py index 29db8e479..9f8bd9937 100644 --- a/src/hapi/wrapper.py +++ b/src/hapi/wrapper.py @@ -148,7 +148,7 @@ def RRMWithlake(Model: Catchment, Lake: Lake, ll_temp=None, q_0=None): ) # qlake is in m3/sec # lake routing - Lake.QlakeR = routing.Muskingum_V( + Lake.QlakeR = routing.muskingum_v( Lake.Qlake, Lake.Qlake[0], Lake.Parameters[11], @@ -160,7 +160,7 @@ def RRMWithlake(Model: Catchment, Lake: Lake, ll_temp=None, q_0=None): distrrm.run_lumped_model(Model) # routing lake discharge with DS cell k & x and adding to cell Q - qlake = routing.Muskingum_V( + qlake = routing.muskingum_v( Lake.QlakeR, Lake.QlakeR[0], Model.Parameters[Lake.OutflowCell[0], Lake.OutflowCell[1], 10], @@ -270,7 +270,7 @@ def FW1Withlake(Model: Catchment, Lake: Lake, ll_temp=None, q_0=None): # qlake is in m3/sec # lake routing - Lake.QlakeR = routing.Muskingum_V( + Lake.QlakeR = routing.muskingum_v( Lake.Qlake, Lake.Qlake[0], Lake.Parameters[11], diff --git a/tests/calibration/lumped_calibration.py b/tests/calibration/lumped_calibration.py index cc4769301..6dd435e0a 100644 --- a/tests/calibration/lumped_calibration.py +++ b/tests/calibration/lumped_calibration.py @@ -43,7 +43,7 @@ parameters = [] # Routing Route = 1 -RoutingFn = Routing.TriangularRouting1 +RoutingFn = Routing.triangular_routing_1 Basic_inputs = dict(Route=Route, RoutingFn=RoutingFn, InitialValues=parameters) # %% diff --git a/tests/rrm/calibration/test_rrm_calibration.py b/tests/rrm/calibration/test_rrm_calibration.py index a15c59ad9..73fc2b847 100644 --- a/tests/rrm/calibration/test_rrm_calibration.py +++ b/tests/rrm/calibration/test_rrm_calibration.py @@ -45,7 +45,7 @@ def test_lumped_calibration( parameters = [] # Routing Route = 1 - RoutingFn = Routing.TriangularRouting1 + RoutingFn = Routing.triangular_routing_1 Basic_inputs = dict(Route=Route, RoutingFn=RoutingFn, InitialValues=parameters) diff --git a/tests/rrm/catchment/conftest.py b/tests/rrm/catchment/conftest.py index e8927fd26..1385a0a34 100644 --- a/tests/rrm/catchment/conftest.py +++ b/tests/rrm/catchment/conftest.py @@ -49,4 +49,4 @@ def coello_gauges_date_fmt() -> str: # @pytest.fixture(scope="module") # def coello_lumpedmodel_RoutingFn() -> (inflow: Any, Qinitial: Any, k: Any, x: Any, dt: Any): -# return Routing.Muskingum_V +# return Routing.muskingum_v diff --git a/tests/rrm/catchment/test_rrm_catchment.py b/tests/rrm/catchment/test_rrm_catchment.py index 12ef64002..472f01bfa 100644 --- a/tests/rrm/catchment/test_rrm_catchment.py +++ b/tests/rrm/catchment/test_rrm_catchment.py @@ -79,7 +79,7 @@ def test_run_lumped( coello.read_parameters(lumped_parameters_path, coello_Snow) # discharge gauges coello.read_discharge_gauges(lumped_gauges_path, fmt=coello_gauges_date_fmt) - routing_fn = Routing.Muskingum_V + routing_fn = Routing.muskingum_v route = 1 Run.runLumped(coello, route, routing_fn) @@ -106,7 +106,7 @@ def test_save_lumped_results( # discharge gauges Coello.read_discharge_gauges(lumped_gauges_path, fmt=coello_gauges_date_fmt) Route = 1 - Run.runLumped(Coello, Route, Routing.Muskingum_V) + Run.runLumped(Coello, Route, Routing.muskingum_v) Coello.save_results(result=5, path=path) # # TODO: still not finished as it does not run the plotHydrograph method @@ -127,7 +127,7 @@ def test_save_lumped_results( # Coello.readParameters(lumped_parameters_path, coello_Snow) # # discharge gauges # Coello.readDischargeGauges(lumped_gauges_path, fmt=coello_gauges_date_fmt) - # RoutingFn = Routing.Muskingum_V + # RoutingFn = Routing.muskingum_v # Route = 1 # Run.runLumped(Coello, Route, RoutingFn) # assert len(Coello.Qsim) == 10 and Coello.Qsim.columns.to_list() == ["q"] diff --git a/tests/run/lumped_run.py b/tests/run/lumped_run.py index 2ef944b87..6dc05871f 100644 --- a/tests/run/lumped_run.py +++ b/tests/run/lumped_run.py @@ -34,8 +34,8 @@ # %% observed flow Coello.read_discharge_gauges(Path + "Qout_c.csv", fmt="%Y-%m-%d") # %% Routing -# RoutingFn = Routing.TriangularRouting2 -RoutingFn = Routing.Muskingum_V +# RoutingFn = Routing.triangular_routing_2 +RoutingFn = Routing.muskingum_v Route = 1 ### run the model Run.runLumped(Coello, Route, RoutingFn) diff --git a/tests/sensitivity_analysis.py b/tests/sensitivity_analysis.py index 15a107034..6f4f39c85 100644 --- a/tests/sensitivity_analysis.py +++ b/tests/sensitivity_analysis.py @@ -47,8 +47,8 @@ Coello.read_discharge_gauges(Path + "Qout_c.csv", fmt="%Y-%m-%d") ### Routing Route = 1 -# RoutingFn=Routing.TriangularRouting2 -RoutingFn = Routing.Muskingum +# RoutingFn=Routing.triangular_routing_2 +RoutingFn = Routing.muskingum # %% ### run the model Run.runLumped(Coello, Route, RoutingFn) diff --git a/tests/test_dem.py b/tests/test_dem.py index 6198c8109..e3a1d5dce 100644 --- a/tests/test_dem.py +++ b/tests/test_dem.py @@ -11,11 +11,10 @@ def test_flow_direction_index(coello_df_4000: gdal.Dataset): assert fd_cell.shape == (dem.rows, dem.columns, 2) -def test_flow_direction_table_shape(coello_df_4000: gdal.Dataset): +def test_flow_direction_table_type(coello_df_4000: gdal.Dataset): dem = DEM(coello_df_4000) - fd_cell = dem.flow_direction_table() - assert isinstance(fd_cell, np.ndarray) - assert fd_cell.shape == (dem.rows, dem.columns, 2) + fd_table = dem.flow_direction_table() + assert isinstance(fd_table, dict) def test_flow_direction_table_values(coello_df_4000: gdal.Dataset, coello_fdt): From cb695e21cc692dec1c65bd6877a1b873da4c0455 Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Mon, 30 Mar 2026 22:30:50 +0200 Subject: [PATCH 10/19] update lock file --- pixi.lock | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/pixi.lock b/pixi.lock index 87f04d768..9aa3677ce 100644 --- a/pixi.lock +++ b/pixi.lock @@ -110,7 +110,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/72/cc/7e8b08ee5e203416359d2659d87ebdeb67c2ae3cec8f93501519683fb8f2/pyramids_gis-0.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/56/5d/c814546c2333ceea4ba42262d8c4d55763003e767fa169adc693bd524478/requests-2.33.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/38/cf/06896db3f71c75902a8e9943b444a56e727418f6b4b4a90c98c934f51ed4/scikit_learn-1.8.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/f5/5f/f17563f28ff03c7b6799c50d01d5d856a1d55f2676f537ca8d28c7f627cd/scipy-1.17.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/15/e7/f591a01d9a16e0f9911c1330d59088d38e3ee3566d4460ee79d0b19723f7/serapeum_utils-0.2.0-py3-none-any.whl @@ -212,7 +212,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/72/cc/7e8b08ee5e203416359d2659d87ebdeb67c2ae3cec8f93501519683fb8f2/pyramids_gis-0.9.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/56/5d/c814546c2333ceea4ba42262d8c4d55763003e767fa169adc693bd524478/requests-2.33.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/76/18/a8def8f91b18cd1ba6e05dbe02540168cb24d47e8dcf69e8d00b7da42a08/scikit_learn-1.8.0-cp314-cp314-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/4b/39/f0e8ea762a764a9dc52aa7dabcfad51a354819de1f0d4652b6a1122424d6/scipy-1.17.1-cp314-cp314-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/15/e7/f591a01d9a16e0f9911c1330d59088d38e3ee3566d4460ee79d0b19723f7/serapeum_utils-0.2.0-py3-none-any.whl @@ -442,7 +442,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/3c/26/1062c7ec1b053db9e499b4d2d5bc231743201b74051c973dadeac80a8f43/questionary-2.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/56/5d/c814546c2333ceea4ba42262d8c4d55763003e767fa169adc693bd524478/requests-2.33.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl @@ -679,7 +679,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/3c/26/1062c7ec1b053db9e499b4d2d5bc231743201b74051c973dadeac80a8f43/questionary-2.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/56/5d/c814546c2333ceea4ba42262d8c4d55763003e767fa169adc693bd524478/requests-2.33.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl @@ -924,7 +924,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f8/9b/c108cdb55560eaf253f0cbdb61b29971e9fb34d9c3499b0e96e4e60ed8a5/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/56/5d/c814546c2333ceea4ba42262d8c4d55763003e767fa169adc693bd524478/requests-2.33.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7e/71/44ce230e1b7fadd372515a97e32a83011f906ddded8d03e3c6aafbdedbb7/rfc3987_syntax-1.1.0-py3-none-any.whl @@ -1143,7 +1143,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/fc/7f/a21b20d577e4100c6a41795842028235998a643b1ad406a6d4163ea8f53e/pyzmq-27.1.0-cp312-abi3-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/56/5d/c814546c2333ceea4ba42262d8c4d55763003e767fa169adc693bd524478/requests-2.33.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7e/71/44ce230e1b7fadd372515a97e32a83011f906ddded8d03e3c6aafbdedbb7/rfc3987_syntax-1.1.0-py3-none-any.whl @@ -1399,7 +1399,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/3c/26/1062c7ec1b053db9e499b4d2d5bc231743201b74051c973dadeac80a8f43/questionary-2.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/56/5d/c814546c2333ceea4ba42262d8c4d55763003e767fa169adc693bd524478/requests-2.33.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl @@ -1639,7 +1639,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/3c/26/1062c7ec1b053db9e499b4d2d5bc231743201b74051c973dadeac80a8f43/questionary-2.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/56/5d/c814546c2333ceea4ba42262d8c4d55763003e767fa169adc693bd524478/requests-2.33.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl @@ -1898,7 +1898,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/3c/26/1062c7ec1b053db9e499b4d2d5bc231743201b74051c973dadeac80a8f43/questionary-2.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/56/5d/c814546c2333ceea4ba42262d8c4d55763003e767fa169adc693bd524478/requests-2.33.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl @@ -2134,7 +2134,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/3c/26/1062c7ec1b053db9e499b4d2d5bc231743201b74051c973dadeac80a8f43/questionary-2.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/56/5d/c814546c2333ceea4ba42262d8c4d55763003e767fa169adc693bd524478/requests-2.33.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl @@ -2392,7 +2392,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/3c/26/1062c7ec1b053db9e499b4d2d5bc231743201b74051c973dadeac80a8f43/questionary-2.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/56/5d/c814546c2333ceea4ba42262d8c4d55763003e767fa169adc693bd524478/requests-2.33.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl @@ -2629,7 +2629,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/3c/26/1062c7ec1b053db9e499b4d2d5bc231743201b74051c973dadeac80a8f43/questionary-2.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/58/ca301544e1fa93ed4f80d724bf5b194f6e4b945841c5bfd555878eea9fcb/referencing-0.37.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/56/5d/c814546c2333ceea4ba42262d8c4d55763003e767fa169adc693bd524478/requests-2.33.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl @@ -3969,7 +3969,7 @@ packages: - pypi: ./ name: hapi-nile version: 1.7.0 - sha256: a07139082e3ffd67431eaa6f8b393b29f3da6ac84832a9d6cbec135e59b757b0 + sha256: dc12f63a25dd481c496fd10aef138026bf8e270b0c5c94128674493676973a16 requires_dist: - geopandas>=1.0.1 - loguru>=0.7.2 @@ -9247,10 +9247,10 @@ packages: - rpds-py>=0.7.0 - typing-extensions>=4.4.0 ; python_full_version < '3.13' requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/56/5d/c814546c2333ceea4ba42262d8c4d55763003e767fa169adc693bd524478/requests-2.33.0-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl name: requests - version: 2.33.0 - sha256: 3324635456fa185245e24865e810cecec7b4caf933d7eb133dcde67d48cee69b + version: 2.33.1 + sha256: 4e6d1ef462f3626a1f0a0a9c42dd93c63bad33f9f1c1937509b8c5c8718ab56a requires_dist: - charset-normalizer>=2,<4 - idna>=2.5,<4 @@ -9258,12 +9258,6 @@ packages: - certifi>=2023.5.7 - pysocks>=1.5.6,!=1.5.7 ; extra == 'socks' - chardet>=3.0.2,<8 ; extra == 'use-chardet-on-py3' - - pytest-httpbin==2.1.0 ; extra == 'test' - - pytest-cov ; extra == 'test' - - pytest-mock ; extra == 'test' - - pytest-xdist ; extra == 'test' - - pysocks>=1.5.6,!=1.5.7 ; extra == 'test' - - pytest>=3 ; extra == 'test' requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl name: requests-toolbelt From 2a1c56a734c1ef66a5a188b8cb11dbd8986fa8b1 Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Tue, 31 Mar 2026 20:06:11 +0200 Subject: [PATCH 11/19] update organization name --- .github/workflows/github-pages-mkdocs.yml | 6 +++--- .github/workflows/github-release.yml | 2 +- .github/workflows/pypi-release.yml | 2 +- .github/workflows/tests.yml | 2 +- README.md | 2 +- docs/dev/Installation.md | 20 ++++++++++---------- mkdocs.yml | 4 ++-- pyproject.toml | 8 ++++---- 8 files changed, 23 insertions(+), 23 deletions(-) diff --git a/.github/workflows/github-pages-mkdocs.yml b/.github/workflows/github-pages-mkdocs.yml index 085c5998f..60c7871e4 100644 --- a/.github/workflows/github-pages-mkdocs.yml +++ b/.github/workflows/github-pages-mkdocs.yml @@ -30,7 +30,7 @@ jobs: - uses: actions/checkout@v5 with: fetch-depth: 0 - - uses: Serapieum-of-alex/github-actions/actions/mkdocs-deploy@mkdocs/v1 + - uses: serapeum-org/github-actions/actions/mkdocs-deploy@mkdocs/v1 with: trigger: 'pull_request' package-manager: 'pixi' @@ -44,7 +44,7 @@ jobs: - uses: actions/checkout@v5 with: fetch-depth: 0 - - uses: Serapieum-of-alex/github-actions/actions/mkdocs-deploy@mkdocs/v1 + - uses: serapeum-org/github-actions/actions/mkdocs-deploy@mkdocs/v1 with: trigger: 'main' package-manager: 'pixi' @@ -60,7 +60,7 @@ jobs: - uses: actions/checkout@v5 with: fetch-depth: 0 - - uses: Serapieum-of-alex/github-actions/actions/mkdocs-deploy@mkdocs/v1 + - uses: serapeum-org/github-actions/actions/mkdocs-deploy@mkdocs/v1 with: trigger: 'release' package-manager: 'pixi' diff --git a/.github/workflows/github-release.yml b/.github/workflows/github-release.yml index 1267059c0..7d98ea13b 100644 --- a/.github/workflows/github-release.yml +++ b/.github/workflows/github-release.yml @@ -57,7 +57,7 @@ jobs: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Create GitHub Release with Commitizen - uses: Serapieum-of-alex/github-actions/actions/release/github@github-release/v1 + uses: serapeum-org/github-actions/actions/release/github@github-release/v1 with: github-token: ${{ secrets.GITHUB_TOKEN }} increment: ${{ github.event.inputs.increment }} diff --git a/.github/workflows/pypi-release.yml b/.github/workflows/pypi-release.yml index 4bce1fd9e..e5993e334 100644 --- a/.github/workflows/pypi-release.yml +++ b/.github/workflows/pypi-release.yml @@ -22,7 +22,7 @@ jobs: fetch-depth: 0 ref: ${{ github.event.workflow_run.head_sha || github.sha }} - name: Build and publish to PyPI - uses: Serapieum-of-alex/github-actions/actions/release/pypi@pypi-release/v1 + uses: serapeum-org/github-actions/actions/release/pypi@pypi-release/v1 with: pypi-username: __token__ pypi-password: ${{ secrets.PYPI_PUBLISH }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index eb61f0c4b..4960c2d58 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -25,7 +25,7 @@ jobs: fetch-depth: 0 - name: Set up Python - uses: Serapieum-of-alex/github-actions/actions/python-setup/pixi@pixi/v1 + uses: serapeum-org/github-actions/actions/python-setup/pixi@pixi/v1 with: environments: ${{ matrix.environment }} activate-environment: ${{ matrix.environment }} diff --git a/README.md b/README.md index 06105ba5c..cd4647150 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ Current build status [![Build status](https://ci.appveyor.com/api/projects/status/rys2u0l1nbmfjuww?svg=true)](https://ci.appveyor.com/project/MAfarrag/hapi) -[![codecov](https://codecov.io/gh/Serapieum-of-alex/Hapi/branch/main/graph/badge.svg?token=EMQSR7K2YV)](https://codecov.io/gh/Serapieum-of-alex/Hapi) +[![codecov](https://codecov.io/gh/serapeum-org/Hapi/branch/main/graph/badge.svg?token=EMQSR7K2YV)](https://codecov.io/gh/serapeum-org/Hapi) ![GitHub last commit](https://img.shields.io/github/last-commit/MAfarrag/Hapi) ![GitHub forks](https://img.shields.io/github/forks/MAfarrag/hapi?style=social) ![GitHub Repo stars](https://img.shields.io/github/stars/MAfarrag/Hapi?style=social) diff --git a/docs/dev/Installation.md b/docs/dev/Installation.md index 882b2a239..020b9aa40 100644 --- a/docs/dev/Installation.md +++ b/docs/dev/Installation.md @@ -61,17 +61,17 @@ pip install HAPI-Nile=={release} ## From sources The sources for HapiSM can be downloaded from the -[Github repo](https://github.com/Serapieum-of-alex/Hapi). +[Github repo](https://github.com/serapeum-org/Hapi). You can either clone the public repository: ```shell -$ git clone git://github.com/Serapieum-of-alex/Hapi +$ git clone git://github.com/serapeum-org/Hapi ``` -Or download the [tarball](https://github.com/Serapieum-of-alex/Hapi/tarball/master): +Or download the [tarball](https://github.com/serapeum-org/Hapi/tarball/master): ```shell -$ curl -OJL https://github.com/Serapieum-of-alex/Hapi/tarball/master +$ curl -OJL https://github.com/serapeum-org/Hapi/tarball/master ``` Once you have a copy of the source, you can install it with: @@ -82,11 +82,11 @@ $ python setup.py install To install directly from GitHub (from the HEAD of the master branch): -+ `pip install git+https://github.com/Serapieum-of-alex/Hapi.git` ++ `pip install git+https://github.com/serapeum-org/Hapi.git` or from Github from a specific release: -+ `pip install git+https://github.com/Serapieum-of-alex/Hapi.git@{release}` ++ `pip install git+https://github.com/serapeum-org/Hapi.git@{release}` Now you should be able to start this environment's Python with `python`, try `import Hapi` to see if the package is installed. @@ -102,15 +102,15 @@ of you clone. This will not move a copy to your Python installation directory, b instead create a link in your Python installation pointing to the folder you installed it from, such that any changes you make there are directly reflected in your install. -+ `git clone https://github.com/Serapieum-of-alex/Hapi.git` ++ `git clone https://github.com/serapeum-org/Hapi.git` + `cd Hapi` + `activate Hapi` + `pip install -e .` Alternatively, if you want to avoid using `git` and simply want to test the latest version from the `master` branch, you can replace the first line with downloading -a zip archive from GitHub: https://github.com/Serapieum-of-alex/Hapi/archive/master.zip -[libraries.io](https://libraries.io/github/Serapieum-of-alex/Hapi). +a zip archive from GitHub: https://github.com/serapeum-org/Hapi/archive/master.zip +[libraries.io](https://libraries.io/github/serapeum-org/Hapi). ## Install using pip @@ -122,7 +122,7 @@ use the conda package manager: conda install numpy scipy gdal netcdf4 pyproj ``` -you can check [libraries.io](https://libraries.io/github/Serapieum-of-alex/Hapi). to check versions of the libraries +you can check [libraries.io](https://libraries.io/github/serapeum-org/Hapi). to check versions of the libraries Then install a release {release} of Hapi (available from release 2018.1) with pip: diff --git a/mkdocs.yml b/mkdocs.yml index 10a36efdf..232f53ad3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,6 +1,6 @@ site_name: Hapi -site_url: https://serapieum-of-alex.github.io/Hapi/ -repo_url: https://github.com/Serapieum-of-alex/Hapi +site_url: https://serapeum-org.github.io/Hapi/ +repo_url: https://github.com/serapeum-org/Hapi site_description: Hapi is a Python package for distributed hydrological modeling using HBV96 theme: name: material diff --git a/pyproject.toml b/pyproject.toml index 026364a04..2ad88a3df 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -75,10 +75,10 @@ docs = [ ] [project.urls] -homepage = "https://github.com/Serapieum-of-alex/Hapi" -repository = "https://github.com/Serapieum-of-alex/Hapi" -documentation = "https://serapieum-of-alex.github.io/Hapi" -Changelog = "https://github.com/Serapieum-of-alex/Hapi/blob/main/docs/change-log.md" +homepage = "https://github.com/serapeum-org/Hapi" +repository = "https://github.com/serapeum-org/Hapi" +documentation = "https://serapeum-org.github.io/Hapi" +Changelog = "https://github.com/serapeum-org/Hapi/blob/main/docs/change-log.md" [project.scripts] download-parameters = "hapi.parameters.parameters:main" From 77e48e30bdcd3def699905385fb0826ce1fc05ee Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Tue, 31 Mar 2026 21:11:23 +0200 Subject: [PATCH 12/19] refactor flow direction calculation using D8 offsets for improved readability and performance --- src/hapi/dem.py | 56 ++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/src/hapi/dem.py b/src/hapi/dem.py index ddc7d9f27..e5c3e73b7 100644 --- a/src/hapi/dem.py +++ b/src/hapi/dem.py @@ -10,6 +10,18 @@ from pyramids.dataset import Dataset +D8_OFFSETS: dict[int, tuple[int, int]] = { + 1: (0, 1), # east + 2: (1, 1), # south-east + 4: (1, 0), # south + 8: (1, -1), # south-west + 16: (0, -1), # west + 32: (-1, -1), # north-west + 64: (-1, 0), # north + 128: (-1, 1), # north-east +} + + class DEM(Dataset): """Digital Elevation Model dataset with flow-direction helpers. @@ -60,36 +72,22 @@ def flow_direction_index(self) -> np.ndarray: "flow direction raster should contain values 1,2,4,8,16,32,64,128 only " ) - fd_cell = np.ones((rows, cols, 2)) * np.nan + fd_cell = np.full((rows, cols, 2), np.nan) - for i in range(rows): - for j in range(cols): - if fd[i, j] == 1: - # index of the rows - fd_cell[i, j, 0] = i - # index of the column - fd_cell[i, j, 1] = j + 1 - elif fd[i, j] == 128: - fd_cell[i, j, 0] = i - 1 - fd_cell[i, j, 1] = j + 1 - elif fd[i, j] == 64: - fd_cell[i, j, 0] = i - 1 - fd_cell[i, j, 1] = j - elif fd[i, j] == 32: - fd_cell[i, j, 0] = i - 1 - fd_cell[i, j, 1] = j - 1 - elif fd[i, j] == 16: - fd_cell[i, j, 0] = i - fd_cell[i, j, 1] = j - 1 - elif fd[i, j] == 8: - fd_cell[i, j, 0] = i + 1 - fd_cell[i, j, 1] = j - 1 - elif fd[i, j] == 4: - fd_cell[i, j, 0] = i + 1 - fd_cell[i, j, 1] = j - elif fd[i, j] == 2: - fd_cell[i, j, 0] = i + 1 - fd_cell[i, j, 1] = j + 1 + row_idx, col_idx = np.meshgrid( + np.arange(rows), np.arange(cols), indexing="ij" + ) + d_row = np.full((rows, cols), np.nan) + d_col = np.full((rows, cols), np.nan) + + for code, (dr, dc) in D8_OFFSETS.items(): + mask = fd == code + d_row[mask] = dr + d_col[mask] = dc + + valid = ~np.isnan(d_row) + fd_cell[valid, 0] = row_idx[valid] + d_row[valid] + fd_cell[valid, 1] = col_idx[valid] + d_col[valid] return fd_cell From 09c852f7e182c53f39d7d41acf60f1d7916041e0 Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Tue, 31 Mar 2026 21:29:42 +0200 Subject: [PATCH 13/19] refactor flow direction handling to support multiple encodings and improve validation --- src/hapi/dem.py | 83 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 69 insertions(+), 14 deletions(-) diff --git a/src/hapi/dem.py b/src/hapi/dem.py index e5c3e73b7..2f12c5ba1 100644 --- a/src/hapi/dem.py +++ b/src/hapi/dem.py @@ -10,7 +10,7 @@ from pyramids.dataset import Dataset -D8_OFFSETS: dict[int, tuple[int, int]] = { +D8_OFFSETS_ESRI: dict[int, tuple[int, int]] = { 1: (0, 1), # east 2: (1, 1), # south-east 4: (1, 0), # south @@ -21,6 +21,34 @@ 128: (-1, 1), # north-east } +D8_OFFSETS_SAGA: dict[int, tuple[int, int]] = { + 0: (0, 1), # east + 1: (-1, 1), # north-east + 2: (-1, 0), # north + 3: (-1, -1), # north-west + 4: (0, -1), # west + 5: (1, -1), # south-west + 6: (1, 0), # south + 7: (1, 1), # south-east +} + +D8_OFFSETS_GRASS: dict[int, tuple[int, int]] = { + 1: (-1, 0), # north + 2: (-1, 1), # north-east + 3: (0, 1), # east + 4: (1, 1), # south-east + 5: (1, 0), # south + 6: (1, -1), # south-west + 7: (0, -1), # west + 8: (-1, -1), # north-west +} + +D8_ENCODINGS: dict[str, dict[int, tuple[int, int]]] = { + "esri": D8_OFFSETS_ESRI, + "saga": D8_OFFSETS_SAGA, + "grass": D8_OFFSETS_GRASS, +} + class DEM(Dataset): """Digital Elevation Model dataset with flow-direction helpers. @@ -39,14 +67,29 @@ def __init__(self, src): """Initialize the DEM instance.""" super().__init__(src) - def flow_direction_index(self) -> np.ndarray: + def flow_direction_index( + self, encoding: str = "esri" + ) -> np.ndarray: """Convert flow-direction codes into downstream-cell indices. Reads the flow-direction band from the underlying raster and - maps each of the eight D8 direction codes - (1, 2, 4, 8, 16, 32, 64, 128) to the row/column index of the + maps each D8 direction code to the row/column index of the downstream neighbour cell. + Args: + encoding: The D8 flow-direction encoding used by the + raster. Supported values: + + - ``"esri"`` (default) -- ArcGIS / ESRI powers-of-2 + codes (1, 2, 4, 8, 16, 32, 64, 128). + - ``"saga"`` -- SAGA GIS codes (0--7, starting East + counter-clockwise). Produced by QGIS Processing + SAGA tools such as *Fill Sinks* and *Channel + Network*. + - ``"grass"`` -- GRASS GIS codes (1--8, starting + North clockwise). Produced by QGIS Processing + GRASS tools such as *r.watershed*. + Returns: numpy.ndarray: A 3-D array of shape ``(rows, cols, 2)``. The first layer (``[:, :, 0]``) holds the row index @@ -55,21 +98,29 @@ def flow_direction_index(self) -> np.ndarray: flow direction are set to ``NaN``. Raises: - ValueError: If the flow-direction raster contains values - other than 1, 2, 4, 8, 16, 32, 64, or 128 (excluding - the no-data value). + ValueError: If *encoding* is not one of the supported + names, or if the raster contains direction values + outside the expected set for the chosen encoding. """ - # check flow direction input raster + encoding = encoding.lower() + if encoding not in D8_ENCODINGS: + raise ValueError( + f"Unsupported encoding {encoding!r}. " + f"Choose from {list(D8_ENCODINGS)}" + ) + offsets = D8_ENCODINGS[encoding] + no_val = self.no_data_value[0] cols = self.columns rows = self.rows fd = self.read_array(band=0) fd_val = np.unique(fd[~np.isclose(fd, no_val, rtol=0.00001)]) - fd_should = [1, 2, 4, 8, 16, 32, 64, 128] - if not all(fd_val[i] in fd_should for i in range(len(fd_val))): + valid_codes = set(offsets) + if not all(int(v) in valid_codes for v in fd_val): raise ValueError( - "flow direction raster should contain values 1,2,4,8,16,32,64,128 only " + f"Flow direction raster should contain only " + f"{sorted(valid_codes)} for encoding {encoding!r}" ) fd_cell = np.full((rows, cols, 2), np.nan) @@ -80,7 +131,7 @@ def flow_direction_index(self) -> np.ndarray: d_row = np.full((rows, cols), np.nan) d_col = np.full((rows, cols), np.nan) - for code, (dr, dc) in D8_OFFSETS.items(): + for code, (dr, dc) in offsets.items(): mask = fd == code d_row[mask] = dr d_col[mask] = dc @@ -91,20 +142,24 @@ def flow_direction_index(self) -> np.ndarray: return fd_cell - def flow_direction_table(self) -> dict: + def flow_direction_table(self, encoding: str = "esri") -> dict: """Build an upstream-cell lookup table from flow directions. Uses ``flow_direction_index`` to determine downstream neighbours, then inverts the relationship so that each cell maps to the list of cells that flow directly into it. + Args: + encoding: The D8 flow-direction encoding. See + ``flow_direction_index`` for supported values. + Returns: dict[str, list[tuple[int, int]]]: A dictionary keyed by ``"row,col"`` strings. Each value is a list of ``(row, col)`` tuples identifying the cells whose flow direction points directly into the key cell. """ - flow_direction_index = self.flow_direction_index() + flow_direction_index = self.flow_direction_index(encoding=encoding) rows = self.rows cols = self.columns From c73296ea78df164f8ad5a34b15ca8b539e9da7f3 Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Tue, 31 Mar 2026 21:30:08 +0200 Subject: [PATCH 14/19] update pandas and mypy dependencies to version 3.0.2 and 1.20.0 respectively --- pixi.lock | 175 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 91 insertions(+), 84 deletions(-) diff --git a/pixi.lock b/pixi.lock index 9aa3677ce..8eff18228 100644 --- a/pixi.lock +++ b/pixi.lock @@ -102,7 +102,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/75/97/a471f1c3eb1fd6f6c24a31a5858f443891d5127e63a7788678d14e249aea/matplotlib-3.10.8-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/76/2a/d6dcec4a68ebd9056cd3bede600a5a085d21cc8df37c8b269d3570e1fc05/Oasis_Optimization-1.0.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f2/85/ab6d04733a7d6ff32bfc8382bf1b07078228f5d6ebec5266b91bfc5c4ff7/pandas-3.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/12/c5/cbb1ffefb20a93d3f0e1fdcda699fb84976210d411b008f97f48bf6ce27e/pandas-3.0.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/71/24/538bff45bde96535d7d998c6fed1a751c75ac7c53c37c90dc2601b243893/pillow-12.1.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/46/35/b874f79d03e9f900012cf609f7fff97b77164f2e14ee5aac282f8a999c1b/pyogrio-0.12.1-cp313-cp313-manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl @@ -204,7 +204,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/93/a5/de89ac80f10b8dc615807ee1133cd99ac74082581196d4d9590bea10690d/matplotlib-3.10.8-cp314-cp314-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/76/2a/d6dcec4a68ebd9056cd3bede600a5a085d21cc8df37c8b269d3570e1fc05/Oasis_Optimization-1.0.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/09/f8/8ce132104074f977f907442790eaae24e27bce3b3b454e82faa3237ff098/pandas-3.0.1-cp314-cp314-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/db/60/aba6a38de456e7341285102bede27514795c1eaa353bc0e7638b6b785356/pandas-3.0.2-cp314-cp314-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/40/72/4c245f7d1044b67affc7f134a09ea619d4895333d35322b775b928180044/pillow-12.1.1-cp314-cp314-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/13/bc/e4522f429c45a3b6ad28185849dd76e5c8718b780883c4795e7ee41841ae/pyogrio-0.12.1-cp314-cp314-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl @@ -396,7 +396,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9b/f7/4a5e785ec9fbd65146a27b6b70b6cdc161a66f2024e4b04ac06a67f5578b/mistune-3.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/32/dd260d52babf67bad8e6770f8e1102021877ce0edea106e72df5626bb0ec/mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/42/79/694ca73979cfb3535ebfe78733844cd5aff2e63304f59bf90585110d975a/mypy-1.20.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/a0/5b0c2f11142ed1dddec842457d3f65eaf71a0080894eb6f018755b319c3a/nbclient-0.10.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/4b/8d5f796a792f8a25f6925a96032f098789f448571eb92011df1ae59e8ea8/nbconvert-7.17.0-py3-none-any.whl @@ -409,7 +409,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/76/2a/d6dcec4a68ebd9056cd3bede600a5a085d21cc8df37c8b269d3570e1fc05/Oasis_Optimization-1.0.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f2/85/ab6d04733a7d6ff32bfc8382bf1b07078228f5d6ebec5266b91bfc5c4ff7/pandas-3.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/12/c5/cbb1ffefb20a93d3f0e1fdcda699fb84976210d411b008f97f48bf6ce27e/pandas-3.0.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b6/61/fae042894f4296ec49e3f193aff5d7c18440da9e48102c3315e1bc4519a7/parso-0.8.6-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl @@ -633,7 +633,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9b/f7/4a5e785ec9fbd65146a27b6b70b6cdc161a66f2024e4b04ac06a67f5578b/mistune-3.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/cd/09/4ebd873390a063176f06b0dbf1f7783dd87bd120eae7727fa4ae4179b685/mypy-1.19.1-cp314-cp314-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/59/98/1da9977016678c0b99d43afe52ed00bb3c1a0c4c995d3e6acca1a6ebb9b4/mypy-1.20.0-cp314-cp314-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/a0/5b0c2f11142ed1dddec842457d3f65eaf71a0080894eb6f018755b319c3a/nbclient-0.10.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/4b/8d5f796a792f8a25f6925a96032f098789f448571eb92011df1ae59e8ea8/nbconvert-7.17.0-py3-none-any.whl @@ -646,7 +646,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/76/2a/d6dcec4a68ebd9056cd3bede600a5a085d21cc8df37c8b269d3570e1fc05/Oasis_Optimization-1.0.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/09/f8/8ce132104074f977f907442790eaae24e27bce3b3b454e82faa3237ff098/pandas-3.0.1-cp314-cp314-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/db/60/aba6a38de456e7341285102bede27514795c1eaa353bc0e7638b6b785356/pandas-3.0.2-cp314-cp314-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b6/61/fae042894f4296ec49e3f193aff5d7c18440da9e48102c3315e1bc4519a7/parso-0.8.6-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl @@ -899,7 +899,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/76/2a/d6dcec4a68ebd9056cd3bede600a5a085d21cc8df37c8b269d3570e1fc05/Oasis_Optimization-1.0.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f2/85/ab6d04733a7d6ff32bfc8382bf1b07078228f5d6ebec5266b91bfc5c4ff7/pandas-3.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/12/c5/cbb1ffefb20a93d3f0e1fdcda699fb84976210d411b008f97f48bf6ce27e/pandas-3.0.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b6/61/fae042894f4296ec49e3f193aff5d7c18440da9e48102c3315e1bc4519a7/parso-0.8.6-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl @@ -1119,7 +1119,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/76/2a/d6dcec4a68ebd9056cd3bede600a5a085d21cc8df37c8b269d3570e1fc05/Oasis_Optimization-1.0.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/09/f8/8ce132104074f977f907442790eaae24e27bce3b3b454e82faa3237ff098/pandas-3.0.1-cp314-cp314-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/db/60/aba6a38de456e7341285102bede27514795c1eaa353bc0e7638b6b785356/pandas-3.0.2-cp314-cp314-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b6/61/fae042894f4296ec49e3f193aff5d7c18440da9e48102c3315e1bc4519a7/parso-0.8.6-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl @@ -1352,7 +1352,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9b/f7/4a5e785ec9fbd65146a27b6b70b6cdc161a66f2024e4b04ac06a67f5578b/mistune-3.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/2d/46/20f8a7114a56484ab268b0ab372461cb3a8f7deed31ea96b83a4e4cfcfca/mypy-1.19.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/db/a7/460678d3cf7da252d2288dad0c602294b6ec22a91932ec368cc11e44bb6e/mypy-1.20.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/a0/5b0c2f11142ed1dddec842457d3f65eaf71a0080894eb6f018755b319c3a/nbclient-0.10.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/4b/8d5f796a792f8a25f6925a96032f098789f448571eb92011df1ae59e8ea8/nbconvert-7.17.0-py3-none-any.whl @@ -1366,7 +1366,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/76/2a/d6dcec4a68ebd9056cd3bede600a5a085d21cc8df37c8b269d3570e1fc05/Oasis_Optimization-1.0.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/2e/7c/870c7e7daec2a6c7ff2ac9e33b23317230d4e4e954b35112759ea4a924a7/pandas-3.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/20/17/ec40d981705654853726e7ac9aea9ddbb4a5d9cf54d8472222f4f3de06c2/pandas-3.0.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b6/61/fae042894f4296ec49e3f193aff5d7c18440da9e48102c3315e1bc4519a7/parso-0.8.6-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl @@ -1592,7 +1592,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9b/f7/4a5e785ec9fbd65146a27b6b70b6cdc161a66f2024e4b04ac06a67f5578b/mistune-3.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fd/a3/47cbd4e85bec4335a9cd80cf67dbc02be21b5d4c9c23ad6b95d6c5196bac/mypy-1.19.1-cp311-cp311-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/be/66/8e02ec184f852ed5c4abb805583305db475930854e09964b55e107cdcbc4/mypy-1.20.0-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/a0/5b0c2f11142ed1dddec842457d3f65eaf71a0080894eb6f018755b319c3a/nbclient-0.10.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/4b/8d5f796a792f8a25f6925a96032f098789f448571eb92011df1ae59e8ea8/nbconvert-7.17.0-py3-none-any.whl @@ -1606,7 +1606,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/76/2a/d6dcec4a68ebd9056cd3bede600a5a085d21cc8df37c8b269d3570e1fc05/Oasis_Optimization-1.0.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1f/67/af63f83cd6ca603a00fe8530c10a60f0879265b8be00b5930e8e78c5b30b/pandas-3.0.1-cp311-cp311-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/44/a0/97a6339859d4acb2536efb24feb6708e82f7d33b2ed7e036f2983fcced82/pandas-3.0.2-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b6/61/fae042894f4296ec49e3f193aff5d7c18440da9e48102c3315e1bc4519a7/parso-0.8.6-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl @@ -1852,7 +1852,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9b/f7/4a5e785ec9fbd65146a27b6b70b6cdc161a66f2024e4b04ac06a67f5578b/mistune-3.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/00/be/dd56c1fd4807bc1eba1cf18b2a850d0de7bacb55e158755eb79f77c41f8e/mypy-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c5/b7/54a720f565a87b893182a2a393370289ae7149e4715859e10e1c05e49154/mypy-1.20.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/a0/5b0c2f11142ed1dddec842457d3f65eaf71a0080894eb6f018755b319c3a/nbclient-0.10.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/4b/8d5f796a792f8a25f6925a96032f098789f448571eb92011df1ae59e8ea8/nbconvert-7.17.0-py3-none-any.whl @@ -1865,7 +1865,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/76/2a/d6dcec4a68ebd9056cd3bede600a5a085d21cc8df37c8b269d3570e1fc05/Oasis_Optimization-1.0.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/3d/fe/89d77e424365280b79d99b3e1e7d606f5165af2f2ecfaf0c6d24c799d607/pandas-3.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c4/a8/3a61a721472959ab0ce865ef05d10b0d6bfe27ce8801c99f33d4fa996e65/pandas-3.0.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b6/61/fae042894f4296ec49e3f193aff5d7c18440da9e48102c3315e1bc4519a7/parso-0.8.6-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl @@ -2088,7 +2088,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9b/f7/4a5e785ec9fbd65146a27b6b70b6cdc161a66f2024e4b04ac06a67f5578b/mistune-3.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/6f/63/e7493e5f90e1e085c562bb06e2eb32cae27c5057b9653348d38b47daaecc/mypy-1.19.1-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/77/91/21b8ba75f958bcda75690951ce6fa6b7138b03471618959529d74b8544e2/mypy-1.20.0-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/a0/5b0c2f11142ed1dddec842457d3f65eaf71a0080894eb6f018755b319c3a/nbclient-0.10.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/4b/8d5f796a792f8a25f6925a96032f098789f448571eb92011df1ae59e8ea8/nbconvert-7.17.0-py3-none-any.whl @@ -2101,7 +2101,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/76/2a/d6dcec4a68ebd9056cd3bede600a5a085d21cc8df37c8b269d3570e1fc05/Oasis_Optimization-1.0.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/75/08/67cc404b3a966b6df27b38370ddd96b3b023030b572283d035181854aac5/pandas-3.0.1-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/7b/8b/721a9cff6fa6a91b162eb51019c6243b82b3226c71bb6c8ef4a9bd65cbc6/pandas-3.0.2-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b6/61/fae042894f4296ec49e3f193aff5d7c18440da9e48102c3315e1bc4519a7/parso-0.8.6-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl @@ -2346,7 +2346,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9b/f7/4a5e785ec9fbd65146a27b6b70b6cdc161a66f2024e4b04ac06a67f5578b/mistune-3.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/32/dd260d52babf67bad8e6770f8e1102021877ce0edea106e72df5626bb0ec/mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/42/79/694ca73979cfb3535ebfe78733844cd5aff2e63304f59bf90585110d975a/mypy-1.20.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/a0/5b0c2f11142ed1dddec842457d3f65eaf71a0080894eb6f018755b319c3a/nbclient-0.10.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/4b/8d5f796a792f8a25f6925a96032f098789f448571eb92011df1ae59e8ea8/nbconvert-7.17.0-py3-none-any.whl @@ -2359,7 +2359,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/76/2a/d6dcec4a68ebd9056cd3bede600a5a085d21cc8df37c8b269d3570e1fc05/Oasis_Optimization-1.0.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f2/85/ab6d04733a7d6ff32bfc8382bf1b07078228f5d6ebec5266b91bfc5c4ff7/pandas-3.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/12/c5/cbb1ffefb20a93d3f0e1fdcda699fb84976210d411b008f97f48bf6ce27e/pandas-3.0.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b6/61/fae042894f4296ec49e3f193aff5d7c18440da9e48102c3315e1bc4519a7/parso-0.8.6-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl @@ -2583,7 +2583,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/9b/f7/4a5e785ec9fbd65146a27b6b70b6cdc161a66f2024e4b04ac06a67f5578b/mistune-3.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/98/76/d32051fa65ecf6cc8c6610956473abdc9b4c43301107476ac03559507843/mypy-1.19.1-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/d8/9b/549228d88f574d04117e736f55958bd4908f980f9f5700a07aeb85df005b/mypy-1.20.0-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/83/a0/5b0c2f11142ed1dddec842457d3f65eaf71a0080894eb6f018755b319c3a/nbclient-0.10.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/4b/8d5f796a792f8a25f6925a96032f098789f448571eb92011df1ae59e8ea8/nbconvert-7.17.0-py3-none-any.whl @@ -2596,7 +2596,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/76/2a/d6dcec4a68ebd9056cd3bede600a5a085d21cc8df37c8b269d3570e1fc05/Oasis_Optimization-1.0.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d6/7d/216a1588b65a7aa5f4535570418a599d943c85afb1d95b0876fc00aa1468/pandas-3.0.1-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/5e/52/42855bf626868413f761addd574acc6195880ae247a5346477a4361c3acb/pandas-3.0.2-cp313-cp313-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b6/61/fae042894f4296ec49e3f193aff5d7c18440da9e48102c3315e1bc4519a7/parso-0.8.6-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl @@ -3969,7 +3969,7 @@ packages: - pypi: ./ name: hapi-nile version: 1.7.0 - sha256: dc12f63a25dd481c496fd10aef138026bf8e270b0c5c94128674493676973a16 + sha256: eb8065190115f17da34beb2d567648a51090ca22257a7d9944bd485fcbd0e927 requires_dist: - geopandas>=1.0.1 - loguru>=0.7.2 @@ -6939,118 +6939,125 @@ packages: purls: [] size: 148557 timestamp: 1747117340968 -- pypi: https://files.pythonhosted.org/packages/00/be/dd56c1fd4807bc1eba1cf18b2a850d0de7bacb55e158755eb79f77c41f8e/mypy-1.19.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/42/79/694ca73979cfb3535ebfe78733844cd5aff2e63304f59bf90585110d975a/mypy-1.20.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl name: mypy - version: 1.19.1 - sha256: c35d298c2c4bba75feb2195655dfea8124d855dfd7343bf8b8c055421eaf0cf8 + version: 1.20.0 + sha256: 555658c611099455b2da507582ea20d2043dfdfe7f5ad0add472b1c6238b433f requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 - - pathspec>=0.9.0 + - pathspec>=1.0.0 - tomli>=1.1.0 ; python_full_version < '3.11' - - librt>=0.6.2 ; platform_python_implementation != 'PyPy' + - librt>=0.8.0 ; platform_python_implementation != 'PyPy' - psutil>=4.0 ; extra == 'dmypy' - setuptools>=50 ; extra == 'mypyc' - lxml ; extra == 'reports' - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/2d/46/20f8a7114a56484ab268b0ab372461cb3a8f7deed31ea96b83a4e4cfcfca/mypy-1.19.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - ast-serialize>=0.1.1,<1.0.0 ; extra == 'native-parser' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/59/98/1da9977016678c0b99d43afe52ed00bb3c1a0c4c995d3e6acca1a6ebb9b4/mypy-1.20.0-cp314-cp314-win_amd64.whl name: mypy - version: 1.19.1 - sha256: a009ffa5a621762d0c926a078c2d639104becab69e79538a494bcccb62cc0331 + version: 1.20.0 + sha256: 00e047c74d3ec6e71a2eb88e9ea551a2edb90c21f993aefa9e0d2a898e0bb732 requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 - - pathspec>=0.9.0 + - pathspec>=1.0.0 - tomli>=1.1.0 ; python_full_version < '3.11' - - librt>=0.6.2 ; platform_python_implementation != 'PyPy' + - librt>=0.8.0 ; platform_python_implementation != 'PyPy' - psutil>=4.0 ; extra == 'dmypy' - setuptools>=50 ; extra == 'mypyc' - lxml ; extra == 'reports' - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/6f/63/e7493e5f90e1e085c562bb06e2eb32cae27c5057b9653348d38b47daaecc/mypy-1.19.1-cp312-cp312-win_amd64.whl + - ast-serialize>=0.1.1,<1.0.0 ; extra == 'native-parser' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/77/91/21b8ba75f958bcda75690951ce6fa6b7138b03471618959529d74b8544e2/mypy-1.20.0-cp312-cp312-win_amd64.whl name: mypy - version: 1.19.1 - sha256: b10e7c2cd7870ba4ad9b2d8a6102eb5ffc1f16ca35e3de6bfa390c1113029d13 + version: 1.20.0 + sha256: 0ecd63f75fdd30327e4ad8b5704bd6d91fc6c1b2e029f8ee14705e1207212489 requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 - - pathspec>=0.9.0 + - pathspec>=1.0.0 - tomli>=1.1.0 ; python_full_version < '3.11' - - librt>=0.6.2 ; platform_python_implementation != 'PyPy' + - librt>=0.8.0 ; platform_python_implementation != 'PyPy' - psutil>=4.0 ; extra == 'dmypy' - setuptools>=50 ; extra == 'mypyc' - lxml ; extra == 'reports' - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/98/76/d32051fa65ecf6cc8c6610956473abdc9b4c43301107476ac03559507843/mypy-1.19.1-cp313-cp313-win_amd64.whl + - ast-serialize>=0.1.1,<1.0.0 ; extra == 'native-parser' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/be/66/8e02ec184f852ed5c4abb805583305db475930854e09964b55e107cdcbc4/mypy-1.20.0-cp311-cp311-win_amd64.whl name: mypy - version: 1.19.1 - sha256: 016f2246209095e8eda7538944daa1d60e1e8134d98983b9fc1e92c1fc0cb8dd + version: 1.20.0 + sha256: 2fcedb16d456106e545b2bfd7ef9d24e70b38ec252d2a629823a4d07ebcdb69e requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 - - pathspec>=0.9.0 + - pathspec>=1.0.0 - tomli>=1.1.0 ; python_full_version < '3.11' - - librt>=0.6.2 ; platform_python_implementation != 'PyPy' + - librt>=0.8.0 ; platform_python_implementation != 'PyPy' - psutil>=4.0 ; extra == 'dmypy' - setuptools>=50 ; extra == 'mypyc' - lxml ; extra == 'reports' - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/cd/09/4ebd873390a063176f06b0dbf1f7783dd87bd120eae7727fa4ae4179b685/mypy-1.19.1-cp314-cp314-win_amd64.whl + - ast-serialize>=0.1.1,<1.0.0 ; extra == 'native-parser' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/c5/b7/54a720f565a87b893182a2a393370289ae7149e4715859e10e1c05e49154/mypy-1.20.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl name: mypy - version: 1.19.1 - sha256: 8bb5c6f6d043655e055be9b542aa5f3bdd30e4f3589163e85f93f3640060509f + version: 1.20.0 + sha256: 9804c3ad27f78e54e58b32e7cb532d128b43dbfb9f3f9f06262b821a0f6bd3f5 requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 - - pathspec>=0.9.0 + - pathspec>=1.0.0 - tomli>=1.1.0 ; python_full_version < '3.11' - - librt>=0.6.2 ; platform_python_implementation != 'PyPy' + - librt>=0.8.0 ; platform_python_implementation != 'PyPy' - psutil>=4.0 ; extra == 'dmypy' - setuptools>=50 ; extra == 'mypyc' - lxml ; extra == 'reports' - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/d1/32/dd260d52babf67bad8e6770f8e1102021877ce0edea106e72df5626bb0ec/mypy-1.19.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - ast-serialize>=0.1.1,<1.0.0 ; extra == 'native-parser' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/d8/9b/549228d88f574d04117e736f55958bd4908f980f9f5700a07aeb85df005b/mypy-1.20.0-cp313-cp313-win_amd64.whl name: mypy - version: 1.19.1 - sha256: c9a6538e0415310aad77cb94004ca6482330fece18036b5f360b62c45814c4ef + version: 1.20.0 + sha256: f49590891d2c2f8a9de15614e32e459a794bcba84693c2394291a2038bbaaa69 requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 - - pathspec>=0.9.0 + - pathspec>=1.0.0 - tomli>=1.1.0 ; python_full_version < '3.11' - - librt>=0.6.2 ; platform_python_implementation != 'PyPy' + - librt>=0.8.0 ; platform_python_implementation != 'PyPy' - psutil>=4.0 ; extra == 'dmypy' - setuptools>=50 ; extra == 'mypyc' - lxml ; extra == 'reports' - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/fd/a3/47cbd4e85bec4335a9cd80cf67dbc02be21b5d4c9c23ad6b95d6c5196bac/mypy-1.19.1-cp311-cp311-win_amd64.whl + - ast-serialize>=0.1.1,<1.0.0 ; extra == 'native-parser' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/db/a7/460678d3cf7da252d2288dad0c602294b6ec22a91932ec368cc11e44bb6e/mypy-1.20.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl name: mypy - version: 1.19.1 - sha256: 4b84a7a18f41e167f7995200a1d07a4a6810e89d29859df936f1c3923d263042 + version: 1.20.0 + sha256: b503ab55a836136b619b5fc21c8803d810c5b87551af8600b72eecafb0059cb0 requires_dist: - typing-extensions>=4.6.0 - mypy-extensions>=1.0.0 - - pathspec>=0.9.0 + - pathspec>=1.0.0 - tomli>=1.1.0 ; python_full_version < '3.11' - - librt>=0.6.2 ; platform_python_implementation != 'PyPy' + - librt>=0.8.0 ; platform_python_implementation != 'PyPy' - psutil>=4.0 ; extra == 'dmypy' - setuptools>=50 ; extra == 'mypyc' - lxml ; extra == 'reports' - pip ; extra == 'install-types' - orjson ; extra == 'faster-cache' - requires_python: '>=3.9' + - ast-serialize>=0.1.1,<1.0.0 ; extra == 'native-parser' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl name: mypy-extensions version: 1.1.0 @@ -7505,10 +7512,10 @@ packages: - pytest ; extra == 'dev' - tox ; extra == 'dev' - black ; extra == 'lint' -- pypi: https://files.pythonhosted.org/packages/09/f8/8ce132104074f977f907442790eaae24e27bce3b3b454e82faa3237ff098/pandas-3.0.1-cp314-cp314-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/12/c5/cbb1ffefb20a93d3f0e1fdcda699fb84976210d411b008f97f48bf6ce27e/pandas-3.0.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl name: pandas - version: 3.0.1 - sha256: 93325b0fe372d192965f4cca88d97667f49557398bbf94abdda3bf1b591dbe66 + version: 3.0.2 + sha256: 5d3cfe227c725b1f3dff4278b43d8c784656a42a9325b63af6b1492a8232209e requires_dist: - numpy>=1.26.0 ; python_full_version < '3.14' - numpy>=2.3.3 ; python_full_version >= '3.14' @@ -7595,10 +7602,10 @@ packages: - xlsxwriter>=3.2.0 ; extra == 'all' - zstandard>=0.23.0 ; extra == 'all' requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/1f/67/af63f83cd6ca603a00fe8530c10a60f0879265b8be00b5930e8e78c5b30b/pandas-3.0.1-cp311-cp311-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/20/17/ec40d981705654853726e7ac9aea9ddbb4a5d9cf54d8472222f4f3de06c2/pandas-3.0.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl name: pandas - version: 3.0.1 - sha256: 84f0904a69e7365f79a0c77d3cdfccbfb05bf87847e3a51a41e1426b0edb9c79 + version: 3.0.2 + sha256: 61c2fd96d72b983a9891b2598f286befd4ad262161a609c92dc1652544b46b76 requires_dist: - numpy>=1.26.0 ; python_full_version < '3.14' - numpy>=2.3.3 ; python_full_version >= '3.14' @@ -7685,10 +7692,10 @@ packages: - xlsxwriter>=3.2.0 ; extra == 'all' - zstandard>=0.23.0 ; extra == 'all' requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/2e/7c/870c7e7daec2a6c7ff2ac9e33b23317230d4e4e954b35112759ea4a924a7/pandas-3.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/44/a0/97a6339859d4acb2536efb24feb6708e82f7d33b2ed7e036f2983fcced82/pandas-3.0.2-cp311-cp311-win_amd64.whl name: pandas - version: 3.0.1 - sha256: 830994d7e1f31dd7e790045235605ab61cff6c94defc774547e8b7fdfbff3dc7 + version: 3.0.2 + sha256: ed72cb3f45190874eb579c64fa92d9df74e98fd63e2be7f62bce5ace0ade61df requires_dist: - numpy>=1.26.0 ; python_full_version < '3.14' - numpy>=2.3.3 ; python_full_version >= '3.14' @@ -7775,10 +7782,10 @@ packages: - xlsxwriter>=3.2.0 ; extra == 'all' - zstandard>=0.23.0 ; extra == 'all' requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/3d/fe/89d77e424365280b79d99b3e1e7d606f5165af2f2ecfaf0c6d24c799d607/pandas-3.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/5e/52/42855bf626868413f761addd574acc6195880ae247a5346477a4361c3acb/pandas-3.0.2-cp313-cp313-win_amd64.whl name: pandas - version: 3.0.1 - sha256: 532527a701281b9dd371e2f582ed9094f4c12dd9ffb82c0c54ee28d8ac9520c4 + version: 3.0.2 + sha256: 07a10f5c36512eead51bc578eb3354ad17578b22c013d89a796ab5eee90cd991 requires_dist: - numpy>=1.26.0 ; python_full_version < '3.14' - numpy>=2.3.3 ; python_full_version >= '3.14' @@ -7865,10 +7872,10 @@ packages: - xlsxwriter>=3.2.0 ; extra == 'all' - zstandard>=0.23.0 ; extra == 'all' requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/75/08/67cc404b3a966b6df27b38370ddd96b3b023030b572283d035181854aac5/pandas-3.0.1-cp312-cp312-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/7b/8b/721a9cff6fa6a91b162eb51019c6243b82b3226c71bb6c8ef4a9bd65cbc6/pandas-3.0.2-cp312-cp312-win_amd64.whl name: pandas - version: 3.0.1 - sha256: 536232a5fe26dd989bd633e7a0c450705fdc86a207fec7254a55e9a22950fe43 + version: 3.0.2 + sha256: a4785e1d6547d8427c5208b748ae2efb64659a21bd82bf440d4262d02bfa02a4 requires_dist: - numpy>=1.26.0 ; python_full_version < '3.14' - numpy>=2.3.3 ; python_full_version >= '3.14' @@ -7955,10 +7962,10 @@ packages: - xlsxwriter>=3.2.0 ; extra == 'all' - zstandard>=0.23.0 ; extra == 'all' requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/d6/7d/216a1588b65a7aa5f4535570418a599d943c85afb1d95b0876fc00aa1468/pandas-3.0.1-cp313-cp313-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/c4/a8/3a61a721472959ab0ce865ef05d10b0d6bfe27ce8801c99f33d4fa996e65/pandas-3.0.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl name: pandas - version: 3.0.1 - sha256: 9fea306c783e28884c29057a1d9baa11a349bbf99538ec1da44c8476563d1b25 + version: 3.0.2 + sha256: ef8b27695c3d3dc78403c9a7d5e59a62d5464a7e1123b4e0042763f7104dc74f requires_dist: - numpy>=1.26.0 ; python_full_version < '3.14' - numpy>=2.3.3 ; python_full_version >= '3.14' @@ -8045,10 +8052,10 @@ packages: - xlsxwriter>=3.2.0 ; extra == 'all' - zstandard>=0.23.0 ; extra == 'all' requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/f2/85/ab6d04733a7d6ff32bfc8382bf1b07078228f5d6ebec5266b91bfc5c4ff7/pandas-3.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/db/60/aba6a38de456e7341285102bede27514795c1eaa353bc0e7638b6b785356/pandas-3.0.2-cp314-cp314-win_amd64.whl name: pandas - version: 3.0.1 - sha256: 1ff8cf1d2896e34343197685f432450ec99a85ba8d90cce2030c5eee2ef98791 + version: 3.0.2 + sha256: b35d14bb5d8285d9494fe93815a9e9307c0876e10f1e8e89ac5b88f728ec8dcf requires_dist: - numpy>=1.26.0 ; python_full_version < '3.14' - numpy>=2.3.3 ; python_full_version >= '3.14' From 45d441551d3e02946fb2d9a56268fd6abfc00f2c Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Tue, 31 Mar 2026 21:52:10 +0200 Subject: [PATCH 15/19] add comperhensive tests for the flow_direction_index method --- tests/test_flow_direction_index.py | 796 +++++++++++++++++++++++++++++ 1 file changed, 796 insertions(+) create mode 100644 tests/test_flow_direction_index.py diff --git a/tests/test_flow_direction_index.py b/tests/test_flow_direction_index.py new file mode 100644 index 000000000..592a8d862 --- /dev/null +++ b/tests/test_flow_direction_index.py @@ -0,0 +1,796 @@ +"""Tests for DEM.flow_direction_index. + +Covers encoding selection, direction offset correctness for all three +D8 encodings (ESRI, SAGA, GRASS), no-data handling, input validation, +output shape, and edge cases. +""" +from __future__ import annotations + +import numpy as np +import pytest +from osgeo import gdal + +from hapi.dem import ( + DEM, + D8_ENCODINGS, + D8_OFFSETS_ESRI, + D8_OFFSETS_GRASS, + D8_OFFSETS_SAGA, +) + +NO_DATA = -1.0 + + +def _create_fd_raster( + data: np.ndarray, no_data: float = NO_DATA +) -> gdal.Dataset: + """Create an in-memory GDAL raster from a 2-D flow-direction array. + + Args: + data: 2-D numpy array of flow direction codes. + no_data: Sentinel value for no-data cells. + + Returns: + An in-memory GDAL Dataset (MEM driver). + """ + rows, cols = data.shape + driver = gdal.GetDriverByName("MEM") + ds = driver.Create("", cols, rows, 1, gdal.GDT_Float64) + ds.SetGeoTransform((0.0, 1.0, 0.0, float(rows), 0.0, -1.0)) + band = ds.GetRasterBand(1) + band.SetNoDataValue(no_data) + band.WriteArray(data) + band.FlushCache() + return ds + + +def _single_code_raster( + code: float, no_data: float = NO_DATA +) -> gdal.Dataset: + """Create a 3x3 raster with one valid code at the center cell. + + Args: + code: Flow direction code to place at cell (1, 1). + no_data: Sentinel value for surrounding cells. + + Returns: + A 3x3 in-memory GDAL Dataset. + """ + data = np.full((3, 3), no_data) + data[1, 1] = code + return _create_fd_raster(data, no_data=no_data) + + +class TestFlowDirectionIndexEncoding: + """Tests for the encoding parameter handling.""" + + def test_default_encoding_is_esri(self): + """Test that calling without encoding uses ESRI codes. + + Test scenario: + A raster with ESRI code 1 (east) at center should + produce a valid downstream index with no explicit + encoding argument. + """ + ds = _single_code_raster(1.0) + dem = DEM(ds) + result = dem.flow_direction_index() + assert not np.isnan(result[1, 1, 0]), ( + "Center cell should have a valid downstream index " + "with default encoding" + ) + + @pytest.mark.parametrize("encoding", ["esri", "saga", "grass"]) + def test_supported_encoding_accepted(self, encoding): + """Test that all supported encoding names are accepted. + + Args: + encoding: One of the supported D8 encoding names. + + Test scenario: + Place the first valid code for the encoding at center + and verify no exception is raised. + """ + first_code = min(D8_ENCODINGS[encoding]) + ds = _single_code_raster(float(first_code)) + dem = DEM(ds) + result = dem.flow_direction_index(encoding=encoding) + assert result.shape == (3, 3, 2), ( + f"Output shape should be (3, 3, 2), got {result.shape}" + ) + + @pytest.mark.parametrize( + "encoding_input, canonical", + [("ESRI", "esri"), ("Saga", "saga"), ("GRASS", "grass")], + ) + def test_encoding_case_insensitive(self, encoding_input, canonical): + """Test that encoding matching is case-insensitive. + + Args: + encoding_input: Mixed-case encoding name. + canonical: Canonical lowercase name. + + Test scenario: + Mixed-case variants like 'ESRI', 'Saga' should resolve + to the canonical encoding without error. + """ + first_code = min(D8_ENCODINGS[canonical]) + ds = _single_code_raster(float(first_code)) + dem = DEM(ds) + result = dem.flow_direction_index(encoding=encoding_input) + assert result.shape == (3, 3, 2), ( + f"Encoding '{encoding_input}' should be accepted" + ) + + @pytest.mark.parametrize( + "bad_encoding", ["arcgis", "qgis", "d8", "", "taudem"] + ) + def test_invalid_encoding_raises_valueerror(self, bad_encoding): + """Test that unsupported encoding names raise ValueError. + + Args: + bad_encoding: An encoding name not in the supported set. + + Test scenario: + Any name not in {'esri', 'saga', 'grass'} should raise + ValueError mentioning 'Unsupported encoding'. + """ + ds = _single_code_raster(1.0) + dem = DEM(ds) + with pytest.raises( + ValueError, match="Unsupported encoding" + ): + dem.flow_direction_index(encoding=bad_encoding) + + +class TestFlowDirectionIndexValidation: + """Tests for flow direction code validation.""" + + @pytest.mark.parametrize( + "invalid_code, encoding", + [ + (3, "esri"), + (5, "esri"), + (7, "esri"), + (9, "esri"), + (100, "esri"), + (256, "esri"), + (9, "saga"), + (10, "saga"), + (0, "grass"), + (9, "grass"), + (10, "grass"), + ], + ids=[ + "esri-3", "esri-5", "esri-7", "esri-9", + "esri-100", "esri-256", + "saga-9", "saga-10", + "grass-0", "grass-9", "grass-10", + ], + ) + def test_invalid_code_raises_valueerror( + self, invalid_code, encoding + ): + """Test that rasters with invalid codes raise ValueError. + + Args: + invalid_code: A flow direction value not in the encoding. + encoding: The D8 encoding being tested. + + Test scenario: + A raster containing a code outside the valid set for the + given encoding should raise ValueError. + """ + ds = _single_code_raster(float(invalid_code)) + dem = DEM(ds) + with pytest.raises( + ValueError, match="Flow direction raster" + ): + dem.flow_direction_index(encoding=encoding) + + def test_mixed_valid_and_invalid_codes_raises(self): + """Test that mixing valid and invalid codes raises ValueError. + + Test scenario: + A raster with ESRI codes 1 (valid) and 3 (invalid) + should raise ValueError. + """ + data = np.full((3, 3), NO_DATA) + data[0, 0] = 1.0 + data[1, 1] = 3.0 + ds = _create_fd_raster(data) + dem = DEM(ds) + with pytest.raises( + ValueError, match="Flow direction raster" + ): + dem.flow_direction_index(encoding="esri") + + +class TestFlowDirectionIndexOutputShape: + """Tests for output array shape and dtype.""" + + @pytest.mark.parametrize( + "rows, cols", [(1, 1), (3, 3), (2, 5), (5, 2), (13, 14)] + ) + def test_output_shape(self, rows, cols): + """Test output shape matches (rows, cols, 2). + + Args: + rows: Number of raster rows. + cols: Number of raster columns. + + Test scenario: + For various raster dimensions, the output should always + be (rows, cols, 2). + """ + data = np.full((rows, cols), 1.0) + ds = _create_fd_raster(data) + dem = DEM(ds) + result = dem.flow_direction_index(encoding="esri") + assert result.shape == (rows, cols, 2), ( + f"Expected shape ({rows}, {cols}, 2), " + f"got {result.shape}" + ) + + def test_output_dtype_is_float(self): + """Test output array dtype supports NaN. + + Test scenario: + The output must be a floating-point array so that + no-data cells can be represented as NaN. + """ + ds = _single_code_raster(1.0) + dem = DEM(ds) + result = dem.flow_direction_index() + assert np.issubdtype(result.dtype, np.floating), ( + f"Expected floating dtype, got {result.dtype}" + ) + + +class TestFlowDirectionIndexNoData: + """Tests for no-data cell handling.""" + + def test_nodata_cells_produce_nan(self): + """Test that no-data cells result in NaN output. + + Test scenario: + In a 3x3 grid with only the center cell valid, all + surrounding no-data cells should be NaN in both layers. + """ + ds = _single_code_raster(1.0) + dem = DEM(ds) + result = dem.flow_direction_index() + + for r in range(3): + for c in range(3): + if (r, c) != (1, 1): + assert np.isnan(result[r, c, 0]), ( + f"Cell ({r},{c}) is no-data but row index " + f"is {result[r, c, 0]}" + ) + assert np.isnan(result[r, c, 1]), ( + f"Cell ({r},{c}) is no-data but col index " + f"is {result[r, c, 1]}" + ) + + def test_all_nodata_produces_all_nan(self): + """Test an all-no-data raster produces entirely NaN output. + + Test scenario: + A 3x3 raster where every cell equals the no-data value + should yield an output filled with NaN. + """ + data = np.full((3, 3), NO_DATA) + ds = _create_fd_raster(data) + dem = DEM(ds) + result = dem.flow_direction_index() + assert np.all(np.isnan(result)), ( + "All cells are no-data; output should be entirely NaN" + ) + + def test_valid_cell_unaffected_by_surrounding_nodata(self): + """Test valid cell indices are correct despite no-data neighbors. + + Test scenario: + ESRI code 4 (south) at center (1,1) of a 3x3 grid. + Expected downstream cell: row=2, col=1. + """ + ds = _single_code_raster(4.0) + dem = DEM(ds) + result = dem.flow_direction_index() + assert result[1, 1, 0] == 2.0, ( + f"Row index should be 2, got {result[1, 1, 0]}" + ) + assert result[1, 1, 1] == 1.0, ( + f"Col index should be 1, got {result[1, 1, 1]}" + ) + + def test_1x1_nodata_raster(self): + """Test a 1x1 raster with only no-data. + + Test scenario: + A single-cell raster at no-data value should produce + NaN in both output layers. + """ + data = np.array([[NO_DATA]]) + ds = _create_fd_raster(data) + dem = DEM(ds) + result = dem.flow_direction_index() + assert np.all(np.isnan(result)), ( + "Single no-data cell should produce all NaN" + ) + + +class TestFlowDirectionIndexEsriDirections: + """Tests for ESRI encoding direction offsets (powers of 2).""" + + @pytest.mark.parametrize( + "code, expected_row, expected_col", + [ + (1, 1, 2), + (2, 2, 2), + (4, 2, 1), + (8, 2, 0), + (16, 1, 0), + (32, 0, 0), + (64, 0, 1), + (128, 0, 2), + ], + ids=[ + "east", "south-east", "south", "south-west", + "west", "north-west", "north", "north-east", + ], + ) + def test_direction_offset( + self, code, expected_row, expected_col + ): + """Test each ESRI D8 code maps to the correct neighbor. + + Args: + code: ESRI flow direction code. + expected_row: Expected row index of downstream cell. + expected_col: Expected column index of downstream cell. + + Test scenario: + Place a single code at (1,1) in a 3x3 grid and verify + the downstream cell indices match the D8 offset. + """ + ds = _single_code_raster(float(code)) + dem = DEM(ds) + result = dem.flow_direction_index(encoding="esri") + assert result[1, 1, 0] == expected_row, ( + f"ESRI code {code}: row should be {expected_row}, " + f"got {result[1, 1, 0]}" + ) + assert result[1, 1, 1] == expected_col, ( + f"ESRI code {code}: col should be {expected_col}, " + f"got {result[1, 1, 1]}" + ) + + def test_all_eight_directions_in_one_raster(self): + """Test a raster containing all eight ESRI codes. + + Test scenario: + A 3x4 raster with codes 1,2,4,8,16,32,64,128 placed + in distinct cells. Each cell's downstream index is + verified against the offset table. + """ + data = np.full((3, 4), NO_DATA) + codes_and_positions = [ + (1, 0, 0), (2, 0, 1), (4, 0, 2), (8, 0, 3), + (16, 1, 0), (32, 1, 1), (64, 1, 2), (128, 1, 3), + ] + for code, r, c in codes_and_positions: + data[r, c] = float(code) + + ds = _create_fd_raster(data) + dem = DEM(ds) + result = dem.flow_direction_index(encoding="esri") + + for code, r, c in codes_and_positions: + dr, dc = D8_OFFSETS_ESRI[code] + assert result[r, c, 0] == r + dr, ( + f"Code {code} at ({r},{c}): expected row " + f"{r + dr}, got {result[r, c, 0]}" + ) + assert result[r, c, 1] == c + dc, ( + f"Code {code} at ({r},{c}): expected col " + f"{c + dc}, got {result[r, c, 1]}" + ) + + +class TestFlowDirectionIndexSagaDirections: + """Tests for SAGA encoding direction offsets (0-7).""" + + @pytest.mark.parametrize( + "code, expected_row, expected_col", + [ + (0, 1, 2), + (1, 0, 2), + (2, 0, 1), + (3, 0, 0), + (4, 1, 0), + (5, 2, 0), + (6, 2, 1), + (7, 2, 2), + ], + ids=[ + "east", "north-east", "north", "north-west", + "west", "south-west", "south", "south-east", + ], + ) + def test_direction_offset( + self, code, expected_row, expected_col + ): + """Test each SAGA D8 code maps to the correct neighbor. + + Args: + code: SAGA flow direction code (0-7). + expected_row: Expected row index of downstream cell. + expected_col: Expected column index of downstream cell. + + Test scenario: + Place a single code at (1,1) in a 3x3 grid and verify + the downstream cell matches the SAGA offset table. + """ + ds = _single_code_raster(float(code)) + dem = DEM(ds) + result = dem.flow_direction_index(encoding="saga") + assert result[1, 1, 0] == expected_row, ( + f"SAGA code {code}: row should be {expected_row}, " + f"got {result[1, 1, 0]}" + ) + assert result[1, 1, 1] == expected_col, ( + f"SAGA code {code}: col should be {expected_col}, " + f"got {result[1, 1, 1]}" + ) + + def test_all_eight_saga_directions(self): + """Test a raster containing all eight SAGA codes. + + Test scenario: + A 3x4 raster with codes 0-7 placed in distinct cells. + Each cell's downstream index is verified against the + SAGA offset table. + """ + data = np.full((3, 4), NO_DATA) + codes_and_positions = [ + (0, 0, 0), (1, 0, 1), (2, 0, 2), (3, 0, 3), + (4, 1, 0), (5, 1, 1), (6, 1, 2), (7, 1, 3), + ] + for code, r, c in codes_and_positions: + data[r, c] = float(code) + + ds = _create_fd_raster(data) + dem = DEM(ds) + result = dem.flow_direction_index(encoding="saga") + + for code, r, c in codes_and_positions: + dr, dc = D8_OFFSETS_SAGA[code] + assert result[r, c, 0] == r + dr, ( + f"SAGA code {code} at ({r},{c}): expected row " + f"{r + dr}, got {result[r, c, 0]}" + ) + assert result[r, c, 1] == c + dc, ( + f"SAGA code {code} at ({r},{c}): expected col " + f"{c + dc}, got {result[r, c, 1]}" + ) + + +class TestFlowDirectionIndexGrassDirections: + """Tests for GRASS encoding direction offsets (1-8).""" + + @pytest.mark.parametrize( + "code, expected_row, expected_col", + [ + (1, 0, 1), + (2, 0, 2), + (3, 1, 2), + (4, 2, 2), + (5, 2, 1), + (6, 2, 0), + (7, 1, 0), + (8, 0, 0), + ], + ids=[ + "north", "north-east", "east", "south-east", + "south", "south-west", "west", "north-west", + ], + ) + def test_direction_offset( + self, code, expected_row, expected_col + ): + """Test each GRASS D8 code maps to the correct neighbor. + + Args: + code: GRASS flow direction code (1-8). + expected_row: Expected row index of downstream cell. + expected_col: Expected column index of downstream cell. + + Test scenario: + Place a single code at (1,1) in a 3x3 grid and verify + the downstream cell matches the GRASS offset table. + """ + ds = _single_code_raster(float(code)) + dem = DEM(ds) + result = dem.flow_direction_index(encoding="grass") + assert result[1, 1, 0] == expected_row, ( + f"GRASS code {code}: row should be {expected_row}, " + f"got {result[1, 1, 0]}" + ) + assert result[1, 1, 1] == expected_col, ( + f"GRASS code {code}: col should be {expected_col}, " + f"got {result[1, 1, 1]}" + ) + + def test_all_eight_grass_directions(self): + """Test a raster containing all eight GRASS codes. + + Test scenario: + A 3x4 raster with codes 1-8 placed in distinct cells. + Each cell's downstream index is verified against the + GRASS offset table. + """ + data = np.full((3, 4), NO_DATA) + codes_and_positions = [ + (1, 0, 0), (2, 0, 1), (3, 0, 2), (4, 0, 3), + (5, 1, 0), (6, 1, 1), (7, 1, 2), (8, 1, 3), + ] + for code, r, c in codes_and_positions: + data[r, c] = float(code) + + ds = _create_fd_raster(data) + dem = DEM(ds) + result = dem.flow_direction_index(encoding="grass") + + for code, r, c in codes_and_positions: + dr, dc = D8_OFFSETS_GRASS[code] + assert result[r, c, 0] == r + dr, ( + f"GRASS code {code} at ({r},{c}): expected row " + f"{r + dr}, got {result[r, c, 0]}" + ) + assert result[r, c, 1] == c + dc, ( + f"GRASS code {code} at ({r},{c}): expected col " + f"{c + dc}, got {result[r, c, 1]}" + ) + + +class TestFlowDirectionIndexCrossEncoding: + """Tests verifying consistent physical directions across encodings.""" + + @pytest.mark.parametrize( + "direction, esri_code, saga_code, grass_code", + [ + ("east", 1, 0, 3), + ("south-east", 2, 7, 4), + ("south", 4, 6, 5), + ("south-west", 8, 5, 6), + ("west", 16, 4, 7), + ("north-west", 32, 3, 8), + ("north", 64, 2, 1), + ("north-east", 128, 1, 2), + ], + ids=[ + "east", "south-east", "south", "south-west", + "west", "north-west", "north", "north-east", + ], + ) + def test_same_direction_same_result( + self, direction, esri_code, saga_code, grass_code + ): + """Test that all encodings produce identical downstream cells. + + Args: + direction: Cardinal/ordinal direction name. + esri_code: ESRI code for this direction. + saga_code: SAGA code for this direction. + grass_code: GRASS code for this direction. + + Test scenario: + Place each encoding's code at (1,1) in a 3x3 grid and + verify all three produce the same downstream cell. + """ + results = {} + for enc, code in [ + ("esri", esri_code), + ("saga", saga_code), + ("grass", grass_code), + ]: + ds = _single_code_raster(float(code)) + dem = DEM(ds) + r = dem.flow_direction_index(encoding=enc) + results[enc] = (r[1, 1, 0], r[1, 1, 1]) + + assert results["esri"] == results["saga"], ( + f"{direction}: ESRI {results['esri']} != " + f"SAGA {results['saga']}" + ) + assert results["esri"] == results["grass"], ( + f"{direction}: ESRI {results['esri']} != " + f"GRASS {results['grass']}" + ) + + +class TestFlowDirectionIndexEdgeCases: + """Tests for boundary and edge-case scenarios.""" + + def test_1x1_raster_valid_code(self): + """Test a 1x1 raster with a valid direction code. + + Test scenario: + A single-cell raster with ESRI code 1 (east). The + downstream cell (0, 1) is out of bounds but should + still be computed without error. + """ + data = np.array([[1.0]]) + ds = _create_fd_raster(data) + dem = DEM(ds) + result = dem.flow_direction_index() + assert result[0, 0, 0] == 0.0, ( + f"Row should be 0, got {result[0, 0, 0]}" + ) + assert result[0, 0, 1] == 1.0, ( + f"Col should be 1 (out of bounds), got {result[0, 0, 1]}" + ) + + def test_corner_cell_points_outside_grid(self): + """Test corner cells pointing outward yield negative indices. + + Test scenario: + ESRI code 32 (north-west) at (0,0) should produce + downstream cell (-1, -1) — outside the raster. + """ + data = np.full((3, 3), NO_DATA) + data[0, 0] = 32.0 + ds = _create_fd_raster(data) + dem = DEM(ds) + result = dem.flow_direction_index() + assert result[0, 0, 0] == -1.0, ( + f"Row should be -1, got {result[0, 0, 0]}" + ) + assert result[0, 0, 1] == -1.0, ( + f"Col should be -1, got {result[0, 0, 1]}" + ) + + def test_edge_cell_points_outside_grid(self): + """Test edge cells pointing outward yield out-of-bounds row. + + Test scenario: + ESRI code 64 (north) at (0,1) should produce downstream + cell (-1, 1) — row is outside the raster. + """ + data = np.full((3, 3), NO_DATA) + data[0, 1] = 64.0 + ds = _create_fd_raster(data) + dem = DEM(ds) + result = dem.flow_direction_index() + assert result[0, 1, 0] == -1.0, ( + f"Row should be -1, got {result[0, 1, 0]}" + ) + assert result[0, 1, 1] == 1.0, ( + f"Col should be 1, got {result[0, 1, 1]}" + ) + + def test_uniform_raster_all_cells_flow_east(self): + """Test a uniform raster where every cell flows east. + + Test scenario: + A 3x3 raster filled with ESRI code 1 (east). Every cell + at (r, c) should point to (r, c+1). + """ + data = np.full((3, 3), 1.0) + ds = _create_fd_raster(data) + dem = DEM(ds) + result = dem.flow_direction_index() + for r in range(3): + for c in range(3): + assert result[r, c, 0] == r, ( + f"Cell ({r},{c}): row should be {r}, " + f"got {result[r, c, 0]}" + ) + assert result[r, c, 1] == c + 1, ( + f"Cell ({r},{c}): col should be {c + 1}, " + f"got {result[r, c, 1]}" + ) + + def test_rectangular_raster_wide(self): + """Test a non-square wide raster (2 rows x 5 cols). + + Test scenario: + All cells have ESRI code 4 (south), so each should + point one row down, same column. + """ + data = np.full((2, 5), 4.0) + ds = _create_fd_raster(data) + dem = DEM(ds) + result = dem.flow_direction_index() + assert result.shape == (2, 5, 2), ( + f"Shape should be (2, 5, 2), got {result.shape}" + ) + for c in range(5): + assert result[0, c, 0] == 1.0, ( + f"Row 0, col {c}: should flow to row 1" + ) + assert result[0, c, 1] == float(c), ( + f"Row 0, col {c}: should stay in col {c}" + ) + + def test_rectangular_raster_tall(self): + """Test a non-square tall raster (5 rows x 2 cols). + + Test scenario: + All cells have ESRI code 1 (east), so each should + point one column right, same row. + """ + data = np.full((5, 2), 1.0) + ds = _create_fd_raster(data) + dem = DEM(ds) + result = dem.flow_direction_index() + assert result.shape == (5, 2, 2), ( + f"Shape should be (5, 2, 2), got {result.shape}" + ) + for r in range(5): + assert result[r, 0, 0] == float(r), ( + f"Row {r}, col 0: should stay in row {r}" + ) + assert result[r, 0, 1] == 1.0, ( + f"Row {r}, col 0: should flow to col 1" + ) + + def test_checkerboard_nodata_pattern(self): + """Test alternating valid/no-data cells in a checkerboard. + + Test scenario: + A 4x4 grid where only cells at even (r+c) positions + hold ESRI code 4 (south). Odd-position cells are + no-data. Valid cells should compute correctly; no-data + cells should be NaN. + """ + data = np.full((4, 4), NO_DATA) + for r in range(4): + for c in range(4): + if (r + c) % 2 == 0: + data[r, c] = 4.0 + + ds = _create_fd_raster(data) + dem = DEM(ds) + result = dem.flow_direction_index() + + for r in range(4): + for c in range(4): + if (r + c) % 2 == 0: + assert result[r, c, 0] == r + 1, ( + f"Valid cell ({r},{c}): row should be " + f"{r + 1}, got {result[r, c, 0]}" + ) + assert result[r, c, 1] == float(c), ( + f"Valid cell ({r},{c}): col should be " + f"{c}, got {result[r, c, 1]}" + ) + else: + assert np.isnan(result[r, c, 0]), ( + f"No-data cell ({r},{c}) should be NaN" + ) + + def test_saga_code_zero_not_confused_with_nodata(self): + """Test SAGA code 0 (east) is not confused with no-data. + + Test scenario: + SAGA encoding uses 0 as a valid code (east). With + no-data set to -1, code 0 should be treated as a valid + direction, not as no-data. + """ + ds = _single_code_raster(0.0) + dem = DEM(ds) + result = dem.flow_direction_index(encoding="saga") + assert not np.isnan(result[1, 1, 0]), ( + "SAGA code 0 should be valid, not treated as no-data" + ) + assert result[1, 1, 0] == 1.0, ( + f"SAGA code 0 (east): row should be 1, " + f"got {result[1, 1, 0]}" + ) + assert result[1, 1, 1] == 2.0, ( + f"SAGA code 0 (east): col should be 2, " + f"got {result[1, 1, 1]}" + ) From 048cd9c78d518992b2e211ac17a9ce385e828741 Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Tue, 31 Mar 2026 22:20:11 +0200 Subject: [PATCH 16/19] update the hapi name to Hapi --- docs/api/calibration.md | 2 +- docs/api/catchment.md | 2 +- docs/api/dem.md | 2 +- docs/api/hbv-bergestrom92.md | 2 +- docs/api/hbv-lake.md | 2 +- docs/api/hbv.md | 2 +- docs/api/inputs.md | 2 +- docs/api/routing.md | 2 +- docs/api/rrm-parameters.md | 2 +- docs/api/run.md | 2 +- docs/api/wrapper.md | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/api/calibration.md b/docs/api/calibration.md index 362cd1462..ffa709f0d 100644 --- a/docs/api/calibration.md +++ b/docs/api/calibration.md @@ -1,4 +1,4 @@ # Calibration ## Calibration -::: Hapi.calibration.Calibration +::: hapi.calibration.Calibration diff --git a/docs/api/catchment.md b/docs/api/catchment.md index aec044eab..cbf6054d0 100644 --- a/docs/api/catchment.md +++ b/docs/api/catchment.md @@ -1,4 +1,4 @@ # Catchment ## Catchment -::: Hapi.catchment.Catchment +::: hapi.catchment.Catchment diff --git a/docs/api/dem.md b/docs/api/dem.md index 847e4dcf6..10961c0f1 100644 --- a/docs/api/dem.md +++ b/docs/api/dem.md @@ -1,4 +1,4 @@ # DEM ## DEM -::: Hapi.dem.DEM +::: hapi.dem.DEM diff --git a/docs/api/hbv-bergestrom92.md b/docs/api/hbv-bergestrom92.md index 3334bf4c6..8737f293e 100644 --- a/docs/api/hbv-bergestrom92.md +++ b/docs/api/hbv-bergestrom92.md @@ -1,4 +1,4 @@ # HBV rainfall runoff model ## HBVBergestrom92 -::: Hapi.rrm.hbv_bergestrom92.HBVBergestrom92 +::: hapi.rrm.hbv_bergestrom92.HBVBergestrom92 diff --git a/docs/api/hbv-lake.md b/docs/api/hbv-lake.md index f1224bdd0..7d653f0fe 100644 --- a/docs/api/hbv-lake.md +++ b/docs/api/hbv-lake.md @@ -1,4 +1,4 @@ # HBV rainfall runoff model ## HBVLake -::: Hapi.rrm.hbv_lake.HBVLake +::: hapi.rrm.hbv_lake.HBVLake diff --git a/docs/api/hbv.md b/docs/api/hbv.md index e56b93202..3f6f2e09b 100644 --- a/docs/api/hbv.md +++ b/docs/api/hbv.md @@ -1,4 +1,4 @@ # HBV rainfall runoff model ## HBV -::: Hapi.rrm.hbv.HBV +::: hapi.rrm.hbv.HBV diff --git a/docs/api/inputs.md b/docs/api/inputs.md index 4fc9dbc48..9c4c01df7 100644 --- a/docs/api/inputs.md +++ b/docs/api/inputs.md @@ -1,4 +1,4 @@ # Inputs ## Inputs -::: Hapi.inputs.Inputs +::: hapi.inputs.Inputs diff --git a/docs/api/routing.md b/docs/api/routing.md index b1bf64425..b6fcfa119 100644 --- a/docs/api/routing.md +++ b/docs/api/routing.md @@ -1,4 +1,4 @@ # Routing ## Routing -::: Hapi.routing.Routing +::: hapi.routing.Routing diff --git a/docs/api/rrm-parameters.md b/docs/api/rrm-parameters.md index 525c2c43e..fd8059c07 100644 --- a/docs/api/rrm-parameters.md +++ b/docs/api/rrm-parameters.md @@ -1,4 +1,4 @@ # Parameters ## Parameters -::: Hapi.rrm.parameters.Parameters +::: hapi.rrm.parameters.Parameters diff --git a/docs/api/run.md b/docs/api/run.md index 0c948f532..68406949b 100644 --- a/docs/api/run.md +++ b/docs/api/run.md @@ -1,4 +1,4 @@ # Run ## Run -::: Hapi.run.Run +::: hapi.run.Run diff --git a/docs/api/wrapper.md b/docs/api/wrapper.md index 964ae583c..c624a3207 100644 --- a/docs/api/wrapper.md +++ b/docs/api/wrapper.md @@ -1,4 +1,4 @@ # Wrapper ## Wrapper -::: Hapi.wrapper.Wrapper +::: hapi.wrapper.Wrapper From 23df9c2c7dc3616f6783cae733dadc3ebdc67ab8 Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Tue, 31 Mar 2026 22:48:49 +0200 Subject: [PATCH 17/19] remove teh backward compatibility --- src/hapi/__init__.py | 47 +------------------------------------------- 1 file changed, 1 insertion(+), 46 deletions(-) diff --git a/src/hapi/__init__.py b/src/hapi/__init__.py index 05ec77cd4..dc3de9bd0 100644 --- a/src/hapi/__init__.py +++ b/src/hapi/__init__.py @@ -5,7 +5,7 @@ Main Features ------------- -Here are just a few of the things that pandas does well: +Here are just a few of the things that Hapi does well: - Easy handling of rasters data downloaded from global data and easy way to manipulate the data to arrange it to run the model @@ -15,54 +15,9 @@ """ from __future__ import annotations -import importlib -import sys -import warnings -from importlib.abc import MetaPathFinder from importlib.metadata import PackageNotFoundError, version try: __version__ = version("hapi-nile") except PackageNotFoundError: # pragma: no cover __version__ = "unknown" - - -class _HapiBackwardCompatFinder(MetaPathFinder): - """Allow ``import Hapi`` / ``from Hapi.x import y`` on case-sensitive systems. - - Redirects any ``Hapi`` or ``Hapi.*`` import to ``hapi`` / ``hapi.*`` - and emits a DeprecationWarning so users know to update their code. - """ - - _migrating: bool = False - - def find_module(self, fullname: str, path: object = None) -> _HapiBackwardCompatFinder | None: - if self._migrating: - return None - if fullname == "Hapi" or fullname.startswith("Hapi."): - return self - return None - - def load_module(self, fullname: str) -> object: - if fullname in sys.modules: - return sys.modules[fullname] - - new_name = "hapi" + fullname[4:] # replace leading "Hapi" - warnings.warn( - f"Importing from '{fullname}' is deprecated. " - f"Use '{new_name}' instead. " - "The 'Hapi' package name will be removed in a future version.", - DeprecationWarning, - stacklevel=2, - ) - self._migrating = True - try: - module = importlib.import_module(new_name) - finally: - self._migrating = False - - sys.modules[fullname] = module - return module - - -sys.meta_path.insert(0, _HapiBackwardCompatFinder()) From 12a61c323f46b260079bd3de366126c1693ae78c Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Tue, 31 Mar 2026 23:01:25 +0200 Subject: [PATCH 18/19] correct docstring --- src/hapi/dem.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/hapi/dem.py b/src/hapi/dem.py index 2f12c5ba1..c96c0e10c 100644 --- a/src/hapi/dem.py +++ b/src/hapi/dem.py @@ -55,8 +55,13 @@ class DEM(Dataset): ``DEM`` wraps a GDAL-backed raster dataset (via ``pyramids.dataset.Dataset``) and adds methods that convert - standard 8-direction flow codes (1, 2, 4, 8, 16, 32, 64, 128) - into downstream-cell indices and upstream-cell lookup tables. + D8 flow-direction codes into downstream-cell indices and + upstream-cell lookup tables. Three encodings are supported: + + - **ESRI** (default): powers-of-2 codes + (1, 2, 4, 8, 16, 32, 64, 128). + - **SAGA**: codes 0--7, starting East counter-clockwise. + - **GRASS**: codes 1--8, starting North clockwise. Args: src: A GDAL dataset or a file path to a DEM raster that can From fc5c582ea191a22cd52e80f2dc34febf37b2edcc Mon Sep 17 00:00:00 2001 From: Mostafa Farrag Date: Tue, 31 Mar 2026 23:04:05 +0200 Subject: [PATCH 19/19] reformat --- src/hapi/routing.py | 46 ++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/hapi/routing.py b/src/hapi/routing.py index 0ba12cd38..968fe712e 100644 --- a/src/hapi/routing.py +++ b/src/hapi/routing.py @@ -258,66 +258,66 @@ def calculate_weights(maxbas): [0.08 0.24 0.36 0.24 0.08] """ yant = 0 - Total = 0 # Just to verify how far from the unit is the result + total = 0 # Just to verify how far from the unit is the result - TotalA = (maxbas * maxbas * np.sin(np.pi / 3)) / 2 - IntPart = np.floor(maxbas) - RealPart = maxbas - IntPart - PeakPoint = maxbas % 2 + total_area = (maxbas * maxbas * np.sin(np.pi / 3)) / 2 + int_part = np.floor(maxbas) + real_part = maxbas - int_part + peak_point = maxbas % 2 flag = 1 # 1 = "up" ; 2 = down - if RealPart > 0: # even number 2,4,6,8,10 - maxbasW = np.ones(int(IntPart) + 1) # if even add 1 + if real_part > 0: # even number 2,4,6,8,10 + maxbas_w = np.ones(int(int_part) + 1) # if even add 1 else: # odd number - maxbasW = np.ones(int(IntPart)) + maxbas_w = np.ones(int(int_part)) for x in range(int(maxbas)): if x < (maxbas / 2.0) - 1: - # Integral of x dx with slope of 60 degree Equilateral triangle + # Integral of x dx with slope of 60 degree Equilateral triangle ynow = np.tan(np.pi / 3) * (x + 1) - # ' Area / Total Area - maxbasW[x] = ((ynow + yant) / 2) / TotalA + # Area / total_area + maxbas_w[x] = ((ynow + yant) / 2) / total_area else: # The area here is calculated by the formlua of a trapezoidal (B1+B2)*h /2 if flag == 1: ynow = np.sin(np.pi / 3) * maxbas - if PeakPoint == 0: - maxbasW[x] = ((ynow + yant) / 2) / TotalA + if peak_point == 0: + maxbas_w[x] = ((ynow + yant) / 2) / total_area else: - A1 = ((ynow + yant) / 2) * (maxbas / 2.0 - x) / TotalA + a1 = ((ynow + yant) / 2) * (maxbas / 2.0 - x) / total_area yant = ynow ynow = (maxbas * np.sin(np.pi / 3)) - ( np.tan(np.pi / 3) * (x + 1 - maxbas / 2.0) ) - A2 = ((ynow + yant) * (x + 1 - maxbas / 2.0) / 2) / TotalA - maxbasW[x] = A1 + A2 + a2 = ((ynow + yant) * (x + 1 - maxbas / 2.0) / 2) / total_area + maxbas_w[x] = a1 + a2 flag = 2 else: # 'sum of the two height in the descending part of the triangle ynow = maxbas * np.sin(np.pi / 3) - np.tan(np.pi / 3) * (x + 1 - maxbas / 2.0) # Multiplying by the height of the trapezoidal and dividing by 2 - maxbasW[x] = ((ynow + yant) / 2) / TotalA + maxbas_w[x] = ((ynow + yant) / 2) / total_area - Total = Total + maxbasW[x] + total = total + maxbas_w[x] yant = ynow x = int(maxbas) # x = x + 1 - if RealPart > 0: + if real_part > 0: if np.floor(maxbas) == 0: maxbas = 1 - maxbasW[x] = 1 + maxbas_w[x] = 1 # NumberofWeights = 1 else: - maxbasW[x] = (yant * (maxbas - (x)) / 2) / TotalA - Total = Total + maxbasW[x] + maxbas_w[x] = (yant * (maxbas - (x)) / 2) / total_area + total = total + maxbas_w[x] # NumberofWeights = x else: # NumberofWeights = x - 1 pass - return maxbasW + return maxbas_w @staticmethod def triangular_routing_1(Q, MAXBAS):