{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "bd2d9bd5", "metadata": { "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "# Suppress distracting outputs in these examples\n", "# Note: this cell should be hidden with the tag \"hide-cell\"\n", "import logging\n", "import warnings\n", "\n", "warnings.filterwarnings(\"ignore\", category=UserWarning)\n", "logger = logging.getLogger(\"esmvalcore\")\n", "logger.setLevel(logging.WARNING)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "aa960d4b", "metadata": {}, "source": [ "# Parameter sets\n", "\n", "Parameter sets are an essential part of many hydrological models, and for the eWaterCycle package as well." ] }, { "cell_type": "code", "execution_count": 3, "id": "c46c9fc4", "metadata": {}, "outputs": [], "source": [ "import ewatercycle.parameter_sets" ] }, { "attachments": {}, "cell_type": "markdown", "id": "00129d25", "metadata": {}, "source": [ "The default [system setup](https://ewatercycle.readthedocs.io/en/latest/system_setup.html#download-example-parameter-sets) includes a number of example parameter sets that can be used directly. System administrators can also add available parameter sets that are globally availble to all users. In the future, we're hoping to add functionality to fetch new parameter sets using a DOI as well.\n", "\n", "To see the available parameter sets:" ] }, { "cell_type": "code", "execution_count": 4, "id": "b1ee9e54", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
{\n",
       "    'pcrglobwb_rhinemeuse_30min': ParameterSet(\n",
       "        name='pcrglobwb_rhinemeuse_30min',\n",
       "        directory=PosixPath('/home/bart/ewatercycle/parameter-sets/pcrglobwb_rhinemeuse_30min'),\n",
       "        config=PosixPath('/home/bart/ewatercycle/parameter-sets/pcrglobwb_rhinemeuse_30min/ini_and_batch_files/delt\n",
       "ares_laptop/setup_natural_test.ini'),\n",
       "        doi='https://doi.org/10.5281/zenodo.1045339',\n",
       "        target_model='pcrglobwb',\n",
       "        supported_model_versions={'setters'},\n",
       "        downloader=GitHubDownloader(\n",
       "            org='UU-Hydro',\n",
       "            repo='PCR-GLOBWB_input_example',\n",
       "            branch='master',\n",
       "            subfolder='RhineMeuse30min'\n",
       "        )\n",
       "    ),\n",
       "    'wflow_rhine_sbm_nc': ParameterSet(\n",
       "        name='wflow_rhine_sbm_nc',\n",
       "        directory=PosixPath('/home/bart/ewatercycle/parameter-sets/wflow_rhine_sbm_nc'),\n",
       "        config=PosixPath('/home/bart/ewatercycle/parameter-sets/wflow_rhine_sbm_nc/wflow_sbm_NC.ini'),\n",
       "        doi='N/A',\n",
       "        target_model='wflow',\n",
       "        supported_model_versions={'2020.1.2', '2020.1.3', '2020.1.1'},\n",
       "        downloader=GitHubDownloader(\n",
       "            org='openstreams',\n",
       "            repo='wflow',\n",
       "            branch='master',\n",
       "            subfolder='examples/wflow_rhine_sbm_nc'\n",
       "        )\n",
       "    )\n",
       "}\n",
       "
\n" ], "text/plain": [ "\u001b[1m{\u001b[0m\n", " \u001b[32m'pcrglobwb_rhinemeuse_30min'\u001b[0m: \u001b[1;35mParameterSet\u001b[0m\u001b[1m(\u001b[0m\n", " \u001b[33mname\u001b[0m=\u001b[32m'pcrglobwb_rhinemeuse_30min'\u001b[0m,\n", " \u001b[33mdirectory\u001b[0m=\u001b[1;35mPosixPath\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'/home/bart/ewatercycle/parameter-sets/pcrglobwb_rhinemeuse_30min'\u001b[0m\u001b[1m)\u001b[0m,\n", " \u001b[33mconfig\u001b[0m=\u001b[1;35mPosixPath\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'/home/bart/ewatercycle/parameter-sets/pcrglobwb_rhinemeuse_30min/ini_and_batch_files/delt\u001b[0m\n", "\u001b[32mares_laptop/setup_natural_test.ini'\u001b[0m\u001b[1m)\u001b[0m,\n", " \u001b[33mdoi\u001b[0m=\u001b[32m'https://doi.org/10.5281/zenodo.1045339'\u001b[0m,\n", " \u001b[33mtarget_model\u001b[0m=\u001b[32m'pcrglobwb'\u001b[0m,\n", " \u001b[33msupported_model_versions\u001b[0m=\u001b[1m{\u001b[0m\u001b[32m'setters'\u001b[0m\u001b[1m}\u001b[0m,\n", " \u001b[33mdownloader\u001b[0m=\u001b[1;35mGitHubDownloader\u001b[0m\u001b[1m(\u001b[0m\n", " \u001b[33morg\u001b[0m=\u001b[32m'UU-Hydro'\u001b[0m,\n", " \u001b[33mrepo\u001b[0m=\u001b[32m'PCR-GLOBWB_input_example'\u001b[0m,\n", " \u001b[33mbranch\u001b[0m=\u001b[32m'master'\u001b[0m,\n", " \u001b[33msubfolder\u001b[0m=\u001b[32m'RhineMeuse30min'\u001b[0m\n", " \u001b[1m)\u001b[0m\n", " \u001b[1m)\u001b[0m,\n", " \u001b[32m'wflow_rhine_sbm_nc'\u001b[0m: \u001b[1;35mParameterSet\u001b[0m\u001b[1m(\u001b[0m\n", " \u001b[33mname\u001b[0m=\u001b[32m'wflow_rhine_sbm_nc'\u001b[0m,\n", " \u001b[33mdirectory\u001b[0m=\u001b[1;35mPosixPath\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'/home/bart/ewatercycle/parameter-sets/wflow_rhine_sbm_nc'\u001b[0m\u001b[1m)\u001b[0m,\n", " \u001b[33mconfig\u001b[0m=\u001b[1;35mPosixPath\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'/home/bart/ewatercycle/parameter-sets/wflow_rhine_sbm_nc/wflow_sbm_NC.ini'\u001b[0m\u001b[1m)\u001b[0m,\n", " \u001b[33mdoi\u001b[0m=\u001b[32m'N/A'\u001b[0m,\n", " \u001b[33mtarget_model\u001b[0m=\u001b[32m'wflow'\u001b[0m,\n", " \u001b[33msupported_model_versions\u001b[0m=\u001b[1m{\u001b[0m\u001b[32m'2020.1.2'\u001b[0m, \u001b[32m'2020.1.3'\u001b[0m, \u001b[32m'2020.1.1'\u001b[0m\u001b[1m}\u001b[0m,\n", " \u001b[33mdownloader\u001b[0m=\u001b[1;35mGitHubDownloader\u001b[0m\u001b[1m(\u001b[0m\n", " \u001b[33morg\u001b[0m=\u001b[32m'openstreams'\u001b[0m,\n", " \u001b[33mrepo\u001b[0m=\u001b[32m'wflow'\u001b[0m,\n", " \u001b[33mbranch\u001b[0m=\u001b[32m'master'\u001b[0m,\n", " \u001b[33msubfolder\u001b[0m=\u001b[32m'examples/wflow_rhine_sbm_nc'\u001b[0m\n", " \u001b[1m)\u001b[0m\n", " \u001b[1m)\u001b[0m\n", "\u001b[1m}\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sets = ewatercycle.parameter_sets.available_parameter_sets()\n", "print(sets)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "e3d9a094", "metadata": {}, "source": [ "Since most parameter sets are model specific, you can filter the results as well:" ] }, { "cell_type": "code", "execution_count": 5, "id": "c089709e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
{\n",
       "    'wflow_rhine_sbm_nc': ParameterSet(\n",
       "        name='wflow_rhine_sbm_nc',\n",
       "        directory=PosixPath('/home/bart/ewatercycle/parameter-sets/wflow_rhine_sbm_nc'),\n",
       "        config=PosixPath('/home/bart/ewatercycle/parameter-sets/wflow_rhine_sbm_nc/wflow_sbm_NC.ini'),\n",
       "        doi='N/A',\n",
       "        target_model='wflow',\n",
       "        supported_model_versions={'2020.1.2', '2020.1.3', '2020.1.1'},\n",
       "        downloader=GitHubDownloader(\n",
       "            org='openstreams',\n",
       "            repo='wflow',\n",
       "            branch='master',\n",
       "            subfolder='examples/wflow_rhine_sbm_nc'\n",
       "        )\n",
       "    )\n",
       "}\n",
       "
\n" ], "text/plain": [ "\u001b[1m{\u001b[0m\n", " \u001b[32m'wflow_rhine_sbm_nc'\u001b[0m: \u001b[1;35mParameterSet\u001b[0m\u001b[1m(\u001b[0m\n", " \u001b[33mname\u001b[0m=\u001b[32m'wflow_rhine_sbm_nc'\u001b[0m,\n", " \u001b[33mdirectory\u001b[0m=\u001b[1;35mPosixPath\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'/home/bart/ewatercycle/parameter-sets/wflow_rhine_sbm_nc'\u001b[0m\u001b[1m)\u001b[0m,\n", " \u001b[33mconfig\u001b[0m=\u001b[1;35mPosixPath\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'/home/bart/ewatercycle/parameter-sets/wflow_rhine_sbm_nc/wflow_sbm_NC.ini'\u001b[0m\u001b[1m)\u001b[0m,\n", " \u001b[33mdoi\u001b[0m=\u001b[32m'N/A'\u001b[0m,\n", " \u001b[33mtarget_model\u001b[0m=\u001b[32m'wflow'\u001b[0m,\n", " \u001b[33msupported_model_versions\u001b[0m=\u001b[1m{\u001b[0m\u001b[32m'2020.1.2'\u001b[0m, \u001b[32m'2020.1.3'\u001b[0m, \u001b[32m'2020.1.1'\u001b[0m\u001b[1m}\u001b[0m,\n", " \u001b[33mdownloader\u001b[0m=\u001b[1;35mGitHubDownloader\u001b[0m\u001b[1m(\u001b[0m\n", " \u001b[33morg\u001b[0m=\u001b[32m'openstreams'\u001b[0m,\n", " \u001b[33mrepo\u001b[0m=\u001b[32m'wflow'\u001b[0m,\n", " \u001b[33mbranch\u001b[0m=\u001b[32m'master'\u001b[0m,\n", " \u001b[33msubfolder\u001b[0m=\u001b[32m'examples/wflow_rhine_sbm_nc'\u001b[0m\n", " \u001b[1m)\u001b[0m\n", " \u001b[1m)\u001b[0m\n", "\u001b[1m}\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sets = ewatercycle.parameter_sets.available_parameter_sets(target_model=\"wflow\")\n", "print(sets)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "1508a346", "metadata": {}, "source": [ "Once you have found a suitable parameter set, you can load it and see some more details:" ] }, { "cell_type": "code", "execution_count": 6, "id": "cfb3109e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
ParameterSet(\n",
       "    name='wflow_rhine_sbm_nc',\n",
       "    directory=PosixPath('/home/bart/ewatercycle/parameter-sets/wflow_rhine_sbm_nc'),\n",
       "    config=PosixPath('/home/bart/ewatercycle/parameter-sets/wflow_rhine_sbm_nc/wflow_sbm_NC.ini'),\n",
       "    doi='N/A',\n",
       "    target_model='wflow',\n",
       "    supported_model_versions={'2020.1.2', '2020.1.3', '2020.1.1'},\n",
       "    downloader=GitHubDownloader(\n",
       "        org='openstreams',\n",
       "        repo='wflow',\n",
       "        branch='master',\n",
       "        subfolder='examples/wflow_rhine_sbm_nc'\n",
       "    )\n",
       ")\n",
       "
\n" ], "text/plain": [ "\u001b[1;35mParameterSet\u001b[0m\u001b[1m(\u001b[0m\n", " \u001b[33mname\u001b[0m=\u001b[32m'wflow_rhine_sbm_nc'\u001b[0m,\n", " \u001b[33mdirectory\u001b[0m=\u001b[1;35mPosixPath\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'/home/bart/ewatercycle/parameter-sets/wflow_rhine_sbm_nc'\u001b[0m\u001b[1m)\u001b[0m,\n", " \u001b[33mconfig\u001b[0m=\u001b[1;35mPosixPath\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'/home/bart/ewatercycle/parameter-sets/wflow_rhine_sbm_nc/wflow_sbm_NC.ini'\u001b[0m\u001b[1m)\u001b[0m,\n", " \u001b[33mdoi\u001b[0m=\u001b[32m'N/A'\u001b[0m,\n", " \u001b[33mtarget_model\u001b[0m=\u001b[32m'wflow'\u001b[0m,\n", " \u001b[33msupported_model_versions\u001b[0m=\u001b[1m{\u001b[0m\u001b[32m'2020.1.2'\u001b[0m, \u001b[32m'2020.1.3'\u001b[0m, \u001b[32m'2020.1.1'\u001b[0m\u001b[1m}\u001b[0m,\n", " \u001b[33mdownloader\u001b[0m=\u001b[1;35mGitHubDownloader\u001b[0m\u001b[1m(\u001b[0m\n", " \u001b[33morg\u001b[0m=\u001b[32m'openstreams'\u001b[0m,\n", " \u001b[33mrepo\u001b[0m=\u001b[32m'wflow'\u001b[0m,\n", " \u001b[33mbranch\u001b[0m=\u001b[32m'master'\u001b[0m,\n", " \u001b[33msubfolder\u001b[0m=\u001b[32m'examples/wflow_rhine_sbm_nc'\u001b[0m\n", " \u001b[1m)\u001b[0m\n", "\u001b[1m)\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "parameter_set = sets[\"wflow_rhine_sbm_nc\"]\n", "print(parameter_set)" ] }, { "attachments": {}, "cell_type": "markdown", "id": "71afc038", "metadata": {}, "source": [ "or you can access individual attributes of the parameter sets" ] }, { "cell_type": "code", "execution_count": 7, "id": "fcae4d5d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'2020.1.1', '2020.1.2', '2020.1.3'}" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "parameter_set.supported_model_versions" ] }, { "attachments": {}, "cell_type": "markdown", "id": "5089109b", "metadata": {}, "source": [ "Should you wish to configure your own parameter set (e.g. for PCRGlobWB in this case), this is also possible:" ] }, { "cell_type": "code", "execution_count": 8, "id": "7843755c", "metadata": {}, "outputs": [], "source": [ "custom_parameter_set = ewatercycle.parameter_sets.ParameterSet(\n", " name=\"custom_parameter_set\",\n", " directory=\"~/ewatercycle/docs/examples/parameter-sets/pcrglobwb_rhinemeuse_30min\",\n", " config=\"~/ewatercycle/docs/examples/parameter-sets/pcrglobwb_rhinemeuse_30min/setup_natural_test.ini\",\n", " target_model=\"pcrglobwb\",\n", " doi=\"https://doi.org/10.5281/zenodo.1045339\",\n", " supported_model_versions={\"setters\"},\n", ")" ] }, { "attachments": {}, "cell_type": "markdown", "id": "5d7ea27e", "metadata": {}, "source": [ "
\n", "\n", "As you can see, an eWaterCycle parameter set is defined fully by a directory and a configuration file. The configuration file typically informs the model about the structure of the parameter set (e.g. \"what is the filename of the land use data\"). It is possible to change these settings later, when [setting up the model](03_models_obs_analysis.ipynb).\n", "\n", "
" ] } ], "metadata": { "interpreter": { "hash": "4f63c3f017d58640bc2174e5f1b6c1610e3d96c1a3fe90d1d439f265cee739e3" }, "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.11.8" } }, "nbformat": 4, "nbformat_minor": 5 }