Skip to content

Commit

Permalink
Merge pull request #18 from eWaterCycle/grpc4bmi-refactor
Browse files Browse the repository at this point in the history
Update notebooks to use grpc4bmi==0.2.12 api
  • Loading branch information
sverhoeven authored Apr 2, 2021
2 parents 339de56 + 49be0a7 commit c0e56bd
Show file tree
Hide file tree
Showing 6 changed files with 103 additions and 71 deletions.
74 changes: 57 additions & 17 deletions pcrglob/pcrg-bmi-docker-psfetch.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@
"metadata": {},
"outputs": [],
"source": [
"from ewatercycle.parametersetdb import build_from_urls"
"from ewatercycle.parametersetdb import build_from_urls\n",
"from os.path import abspath\n",
"from os import mkdir"
]
},
{
Expand All @@ -35,29 +37,57 @@
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"outputs": [
{
"ename": "Exception",
"evalue": "Target directory already exists, will not overwrite",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mException\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-3-af844e59bad5>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0minput_dir\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mabspath\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'./input'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;31m# Write data files required by model to './input'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mparameter_set\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msave_datafiles\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput_dir\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m~/git/eWaterCycle/grpc4bmi-examples/env/lib/python3.8/site-packages/ewatercycle/parametersetdb/__init__.py\u001b[0m in \u001b[0;36msave_datafiles\u001b[0;34m(self, target)\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 23\u001b[0m \"\"\"\n\u001b[0;32m---> 24\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msave\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtarget\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 25\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0msave_config\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget\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[0;32m~/git/eWaterCycle/grpc4bmi-examples/env/lib/python3.8/site-packages/ewatercycle/parametersetdb/datafiles.py\u001b[0m in \u001b[0;36msave\u001b[0;34m(self, target)\u001b[0m\n\u001b[1;32m 32\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0msave\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget\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[1;32m 33\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexists\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtarget\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[0;32m---> 34\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Target directory already exists, will not overwrite'\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 35\u001b[0m \u001b[0msubprocess\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcheck_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'svn'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'export'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msource\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget\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[1;32m 36\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mException\u001b[0m: Target directory already exists, will not overwrite"
]
}
],
"source": [
"input_dir = abspath('./input')\n",
"# Write data files required by model to './input'\n",
"parameter_set.save_datafiles('./input')"
"parameter_set.save_datafiles(input_dir)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 4,
"metadata": {},
"outputs": [],
"outputs": [
{
"ename": "FileExistsError",
"evalue": "[Errno 17] File exists: './output'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mFileExistsError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-4-8b84d990e09f>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mparameter_set\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconfig\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'globalOptions'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'outputDir'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mabspath\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'./output'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mparameter_set\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msave_config\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'pcrg_rhinemeuse_ps.ini'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0mmkdir\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'./output'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mFileExistsError\u001b[0m: [Errno 17] File exists: './output'"
]
}
],
"source": [
"# Overwrite items in config file\n",
"# parameter_set.config for this model is a configparser.ConfigParser object\n",
"# inputDir and outputDir must be inside /data because grpc4bmi will mount input_dir output_dir as such inside container\n",
"parameter_set.config['globalOptions']['inputDir'] = '/data/input'\n",
"parameter_set.config['globalOptions']['outputDir'] = '/data/output'\n",
"parameter_set.save_config('pcrg_rhinemeuse_ps.ini')"
"parameter_set.config['globalOptions']['inputDir'] = input_dir\n",
"parameter_set.config['globalOptions']['outputDir'] = abspath('./output')\n",
"parameter_set.save_config('pcrg_rhinemeuse_ps.ini')\n",
"mkdir('./output')"
]
},
{
"cell_type": "code",
"execution_count": 1,
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
Expand All @@ -66,18 +96,19 @@
},
{
"cell_type": "code",
"execution_count": 2,
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"pcrg = BmiClientDocker(image='ewatercycle/pcrg-grpc4bmi:latest', image_port=55555, \n",
" input_dir=\"./input\", \n",
" output_dir=\"./output\")"
" input_dirs=(input_dir,),\n",
" remove=True,\n",
" work_dir=\".\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
Expand Down Expand Up @@ -307,13 +338,13 @@
{
"ename": "NameError",
"evalue": "name 'variable_overtime' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-30-9cd201c1607b>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfigure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mplot_width\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m800\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mplot_height\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m400\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx_axis_type\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"datetime\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxaxis\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maxis_label\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvariable\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m'['\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0munit\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m']'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mcftime\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnum2date\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0md\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtime_unit\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0md\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mvariable_overtime\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0md\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0md\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mvariable_overtime\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m,\u001b[0m \u001b[0mline_width\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0mshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNameError\u001b[0m: name 'variable_overtime' is not defined"
],
"output_type": "error"
]
}
],
"source": [
Expand Down Expand Up @@ -576,6 +607,15 @@
"Z"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"del pcrg"
]
},
{
"cell_type": "code",
"execution_count": null,
Expand All @@ -600,9 +640,9 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
"version": "3.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
"nbformat_minor": 4
}
5 changes: 2 additions & 3 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#grpc4bmi
git+https://github.com/eWaterCycle/grpc4bmi#egg=grpc4bmi
git+https://github.com/eWaterCycle/parametersetdb#egg=ewatercylce.parametersetdb
grpc4bmi==0.2.12
git+https://github.com/eWaterCycle/ewatercycle
jupyterlab
matplotlib
docker
Expand Down
4 changes: 2 additions & 2 deletions toymodel/toymodel-bmi-docker.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
"outputs": [],
"source": [
"model = BmiClientDocker(image=\"ewatercycle/toymodel:latest\", image_port=55555, \n",
" input_dir=\"./data\")"
" work_dir=\"./data\")"
]
},
{
Expand Down Expand Up @@ -188,4 +188,4 @@
},
"nbformat": 4,
"nbformat_minor": 2
}
}
Loading

0 comments on commit c0e56bd

Please sign in to comment.