From 9548c8bf48fff4995b08153ac8cf102c49ddef49 Mon Sep 17 00:00:00 2001 From: Dobson Date: Fri, 22 Mar 2024 11:40:24 +0000 Subject: [PATCH 01/38] Add dependencies used in WSI --- dev-requirements.txt | 86 ++++---- doc-requirements.txt | 506 +++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 12 + requirements.txt | 60 ++--- 4 files changed, 592 insertions(+), 72 deletions(-) create mode 100644 doc-requirements.txt diff --git a/dev-requirements.txt b/dev-requirements.txt index 3f098c98..8f95944f 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -21,7 +21,7 @@ attrs==23.2.0 # pytest-mypy # rasterio # referencing -build==1.0.3 +build==1.1.1 # via pip-tools cdsapi==0.6.1 # via swmmanywhere (pyproject.toml) @@ -62,39 +62,39 @@ colorama==0.4.6 # tqdm contourpy==1.2.0 # via matplotlib -coverage[toml]==7.3.2 +coverage[toml]==7.4.4 # via # coverage # pytest-cov -cramjam==2.7.0 +cramjam==2.8.3 # via fastparquet cycler==0.12.1 # via matplotlib cytoolz==0.12.3 # via swmmanywhere (pyproject.toml) -dill==0.3.7 +dill==0.3.8 # via multiprocess distlib==0.3.8 # via virtualenv -fastparquet==2023.10.1 +fastparquet==2024.2.0 # via swmmanywhere (pyproject.toml) filelock==3.13.1 # via # pytest-mypy # virtualenv -fiona==1.9.5 +fiona==1.9.6 # via # geopandas # swmmanywhere (pyproject.toml) -fonttools==4.47.2 +fonttools==4.50.0 # via matplotlib -fsspec==2024.2.0 +fsspec==2024.3.1 # via fastparquet geographiclib==2.0 # via geopy geojson==3.1.0 # via pysheds -geopandas==0.14.2 +geopandas==0.14.3 # via # osmnx # swmmanywhere (pyproject.toml) @@ -104,11 +104,11 @@ gitdb==4.0.11 # via gitpython gitpython==3.1.42 # via swmmanywhere (pyproject.toml) -identify==2.5.33 +identify==2.5.35 # via pre-commit idna==3.6 # via requests -imageio==2.33.1 +imageio==2.34.0 # via scikit-image iniconfig==2.0.0 # via pytest @@ -124,17 +124,17 @@ kiwisolver==1.4.5 # via matplotlib lazy-loader==0.3 # via scikit-image -llvmlite==0.41.1 +llvmlite==0.42.0 # via numba loguru==0.7.2 # via swmmanywhere (pyproject.toml) -matplotlib==3.8.2 +matplotlib==3.8.3 # via # salib # swmmanywhere (pyproject.toml) -multiprocess==0.70.15 +multiprocess==0.70.16 # via salib -mypy==1.8.0 +mypy==1.9.0 # via # pytest-mypy # swmmanywhere (pyproject.toml) @@ -152,9 +152,9 @@ networkx==3.2.1 # swmmanywhere (pyproject.toml) nodeenv==1.8.0 # via pre-commit -numba==0.58.1 +numba==0.59.1 # via pysheds -numpy==1.26.3 +numpy==1.26.4 # via # cftime # contourpy @@ -178,9 +178,9 @@ numpy==1.26.3 # swmmanywhere (pyproject.toml) # tifffile # xarray -osmnx==1.8.1 +osmnx==1.9.1 # via swmmanywhere (pyproject.toml) -packaging==23.2 +packaging==24.0 # via # build # fastparquet @@ -191,7 +191,7 @@ packaging==23.2 # rioxarray # scikit-image # xarray -pandas==2.1.4 +pandas==2.2.1 # via # fastparquet # geopandas @@ -205,21 +205,21 @@ pillow==10.2.0 # imageio # matplotlib # scikit-image -pip-tools==7.3.0 +pip-tools==7.4.1 # via swmmanywhere (pyproject.toml) -platformdirs==3.11.0 +platformdirs==4.2.0 # via virtualenv pluggy==1.4.0 # via pytest pre-commit==3.6.2 # via swmmanywhere (pyproject.toml) -pyarrow==14.0.2 +pyarrow==15.0.2 # via swmmanywhere (pyproject.toml) -pydantic==2.5.3 +pydantic==2.6.4 # via swmmanywhere (pyproject.toml) -pydantic-core==2.14.6 +pydantic-core==2.16.3 # via pydantic -pyparsing==3.1.1 +pyparsing==3.1.2 # via # matplotlib # snuggs @@ -229,12 +229,14 @@ pyproj==3.6.1 # pysheds # rioxarray pyproject-hooks==1.0.0 - # via build + # via + # build + # pip-tools pysheds==0.3.5 # via swmmanywhere (pyproject.toml) -pyswmm==1.5.1 +pyswmm==2.0.0 # via swmmanywhere (pyproject.toml) -pytest==7.4.4 +pytest==8.1.1 # via # pytest-cov # pytest-mock @@ -242,15 +244,15 @@ pytest==7.4.4 # swmmanywhere (pyproject.toml) pytest-cov==4.1.0 # via swmmanywhere (pyproject.toml) -pytest-mock==3.12.0 +pytest-mock==3.14.0 # via swmmanywhere (pyproject.toml) pytest-mypy==0.10.3 # via swmmanywhere (pyproject.toml) -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 # via # matplotlib # pandas -pytz==2023.3.post1 +pytz==2024.1 # via pandas pyyaml==6.0.1 # via @@ -261,7 +263,7 @@ rasterio==1.3.9 # pysheds # rioxarray # swmmanywhere (pyproject.toml) -referencing==0.33.0 +referencing==0.34.0 # via # jsonschema # jsonschema-specifications @@ -275,9 +277,9 @@ rpds-py==0.18.0 # via # jsonschema # referencing -ruff==0.1.11 +ruff==0.3.4 # via swmmanywhere (pyproject.toml) -salib==1.4.7 +salib==1.4.8 # via swmmanywhere (pyproject.toml) scikit-image==0.22.0 # via pysheds @@ -288,7 +290,7 @@ scipy==1.12.0 # salib # scikit-image # swmmanywhere (pyproject.toml) -shapely==2.0.2 +shapely==2.0.3 # via # geopandas # osmnx @@ -303,7 +305,7 @@ snuggs==1.4.7 # via rasterio swmm-toolkit==0.15.3 # via pyswmm -tifffile==2024.1.30 +tifffile==2024.2.12 # via scikit-image toolz==0.12.1 # via cytoolz @@ -311,22 +313,22 @@ tqdm==4.66.2 # via # cdsapi # swmmanywhere (pyproject.toml) -typing-extensions==4.9.0 +typing-extensions==4.10.0 # via # mypy # pydantic # pydantic-core tzdata==2024.1 # via pandas -urllib3==2.1.0 +urllib3==2.2.1 # via requests -virtualenv==20.24.5 +virtualenv==20.25.1 # via pre-commit -wheel==0.41.3 +wheel==0.43.0 # via pip-tools win32-setctime==1.1.0 # via loguru -xarray==2023.12.0 +xarray==2024.2.0 # via # rioxarray # swmmanywhere (pyproject.toml) diff --git a/doc-requirements.txt b/doc-requirements.txt new file mode 100644 index 00000000..3ca0b41b --- /dev/null +++ b/doc-requirements.txt @@ -0,0 +1,506 @@ +# +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: +# +# pip-compile --extra=doc --output-file=doc-requirements.txt +# +aenum==3.1.11 + # via + # pyswmm + # swmm-toolkit +affine==2.4.0 + # via + # pysheds + # rasterio +annotated-types==0.6.0 + # via pydantic +asttokens==2.4.1 + # via stack-data +attrs==23.2.0 + # via + # fiona + # jsonschema + # rasterio + # referencing +babel==2.14.0 + # via mkdocs-material +beautifulsoup4==4.12.3 + # via nbconvert +bleach==6.1.0 + # via nbconvert +cdsapi==0.6.1 + # via swmmanywhere (pyproject.toml) +certifi==2024.2.2 + # via + # fiona + # netcdf4 + # pyproj + # rasterio + # requests +cftime==1.6.3 + # via netcdf4 +charset-normalizer==3.3.2 + # via requests +click==8.1.7 + # via + # click-plugins + # cligj + # fiona + # mkdocs + # mkdocstrings + # rasterio +click-plugins==1.1.1 + # via + # fiona + # rasterio +cligj==0.7.2 + # via + # fiona + # rasterio +colorama==0.4.6 + # via + # click + # griffe + # ipython + # loguru + # mkdocs + # mkdocs-material + # tqdm +comm==0.2.2 + # via ipykernel +contourpy==1.2.0 + # via matplotlib +cramjam==2.8.3 + # via fastparquet +cycler==0.12.1 + # via matplotlib +cytoolz==0.12.3 + # via swmmanywhere (pyproject.toml) +debugpy==1.8.1 + # via ipykernel +decorator==5.1.1 + # via ipython +defusedxml==0.7.1 + # via nbconvert +dill==0.3.8 + # via multiprocess +executing==2.0.1 + # via stack-data +fastjsonschema==2.19.1 + # via nbformat +fastparquet==2024.2.0 + # via swmmanywhere (pyproject.toml) +fiona==1.9.6 + # via + # geopandas + # swmmanywhere (pyproject.toml) +fonttools==4.50.0 + # via matplotlib +fsspec==2024.3.1 + # via fastparquet +geographiclib==2.0 + # via geopy +geojson==3.1.0 + # via pysheds +geopandas==0.14.3 + # via + # osmnx + # swmmanywhere (pyproject.toml) +geopy==2.4.1 + # via swmmanywhere (pyproject.toml) +ghp-import==2.1.0 + # via mkdocs +gitdb==4.0.11 + # via gitpython +gitpython==3.1.42 + # via swmmanywhere (pyproject.toml) +griffe==0.42.1 + # via mkdocstrings-python +idna==3.6 + # via requests +imageio==2.34.0 + # via scikit-image +ipykernel==6.29.3 + # via mkdocs-jupyter +ipython==8.22.2 + # via ipykernel +jedi==0.19.1 + # via ipython +jinja2==3.1.3 + # via + # mkdocs + # mkdocs-material + # mkdocstrings + # nbconvert +joblib==1.3.2 + # via swmmanywhere (pyproject.toml) +jsonschema==4.21.1 + # via + # nbformat + # swmmanywhere (pyproject.toml) +jsonschema-specifications==2023.12.1 + # via jsonschema +julian==0.14 + # via pyswmm +jupyter-client==8.6.1 + # via + # ipykernel + # nbclient +jupyter-core==5.7.2 + # via + # ipykernel + # jupyter-client + # nbclient + # nbconvert + # nbformat +jupyterlab-pygments==0.3.0 + # via nbconvert +jupytext==1.16.1 + # via mkdocs-jupyter +kiwisolver==1.4.5 + # via matplotlib +latexcodec==3.0.0 + # via pybtex +lazy-loader==0.3 + # via scikit-image +llvmlite==0.42.0 + # via numba +loguru==0.7.2 + # via swmmanywhere (pyproject.toml) +markdown==3.5.2 + # via + # mkdocs + # mkdocs-autorefs + # mkdocs-material + # mkdocstrings + # mkdocstrings-python + # pymdown-extensions +markdown-it-py==3.0.0 + # via + # jupytext + # mdit-py-plugins +markupsafe==2.1.5 + # via + # jinja2 + # mkdocs + # mkdocs-autorefs + # mkdocstrings + # nbconvert +matplotlib==3.8.3 + # via + # salib + # swmmanywhere (pyproject.toml) +matplotlib-inline==0.1.6 + # via + # ipykernel + # ipython +mdit-py-plugins==0.4.0 + # via jupytext +mdurl==0.1.2 + # via markdown-it-py +mergedeep==1.3.4 + # via mkdocs +mistune==3.0.2 + # via nbconvert +mkdocs==1.5.3 + # via + # mkdocs-autorefs + # mkdocs-bibtex + # mkdocs-coverage + # mkdocs-gen-files + # mkdocs-jupyter + # mkdocs-material + # mkdocstrings + # swmmanywhere (pyproject.toml) +mkdocs-autorefs==1.0.1 + # via + # mkdocstrings + # swmmanywhere (pyproject.toml) +mkdocs-bibtex==2.14.1 + # via swmmanywhere (pyproject.toml) +mkdocs-coverage==1.0.0 + # via swmmanywhere (pyproject.toml) +mkdocs-gen-files==0.5.0 + # via swmmanywhere (pyproject.toml) +mkdocs-jupyter==0.24.6 + # via swmmanywhere (pyproject.toml) +mkdocs-material==9.5.14 + # via + # mkdocs-jupyter + # swmmanywhere (pyproject.toml) +mkdocs-material-extensions==1.3.1 + # via + # mkdocs-material + # swmmanywhere (pyproject.toml) +mkdocstrings[python]==0.24.1 + # via + # mkdocstrings-python + # swmmanywhere (pyproject.toml) +mkdocstrings-python==1.9.0 + # via mkdocstrings +multiprocess==0.70.16 + # via salib +nbclient==0.10.0 + # via nbconvert +nbconvert==7.16.2 + # via mkdocs-jupyter +nbformat==5.10.3 + # via + # jupytext + # nbclient + # nbconvert +nest-asyncio==1.6.0 + # via ipykernel +netcdf4==1.6.5 + # via swmmanywhere (pyproject.toml) +netcomp @ git+https://github.com/barneydobson/NetComp.git + # via swmmanywhere (pyproject.toml) +networkx==3.2.1 + # via + # netcomp + # osmnx + # scikit-image + # swmmanywhere (pyproject.toml) +numba==0.59.1 + # via pysheds +numpy==1.26.4 + # via + # cftime + # contourpy + # fastparquet + # imageio + # matplotlib + # netcdf4 + # netcomp + # numba + # osmnx + # pandas + # pyarrow + # pysheds + # rasterio + # rioxarray + # salib + # scikit-image + # scipy + # shapely + # snuggs + # swmmanywhere (pyproject.toml) + # tifffile + # xarray +osmnx==1.9.1 + # via swmmanywhere (pyproject.toml) +packaging==24.0 + # via + # fastparquet + # geopandas + # ipykernel + # jupytext + # matplotlib + # mkdocs + # nbconvert + # pyswmm + # rioxarray + # scikit-image + # xarray +paginate==0.5.6 + # via mkdocs-material +pandas==2.2.1 + # via + # fastparquet + # geopandas + # osmnx + # pysheds + # salib + # swmmanywhere (pyproject.toml) + # xarray +pandocfilters==1.5.1 + # via nbconvert +parso==0.8.3 + # via jedi +pathspec==0.12.1 + # via mkdocs +pillow==10.2.0 + # via + # imageio + # matplotlib + # scikit-image +platformdirs==4.2.0 + # via + # jupyter-core + # mkdocs + # mkdocstrings +prompt-toolkit==3.0.43 + # via ipython +psutil==5.9.8 + # via ipykernel +pure-eval==0.2.2 + # via stack-data +pyarrow==15.0.2 + # via swmmanywhere (pyproject.toml) +pybtex==0.24.0 + # via mkdocs-bibtex +pydantic==2.6.4 + # via swmmanywhere (pyproject.toml) +pydantic-core==2.16.3 + # via pydantic +pygments==2.17.2 + # via + # ipython + # mkdocs-jupyter + # mkdocs-material + # nbconvert +pymdown-extensions==10.7.1 + # via + # mkdocs-material + # mkdocstrings +pypandoc==1.13 + # via + # mkdocs-bibtex + # swmmanywhere (pyproject.toml) +pyparsing==3.1.2 + # via + # matplotlib + # snuggs +pyproj==3.6.1 + # via + # geopandas + # pysheds + # rioxarray +pysheds==0.3.5 + # via swmmanywhere (pyproject.toml) +pyswmm==2.0.0 + # via swmmanywhere (pyproject.toml) +python-dateutil==2.9.0.post0 + # via + # ghp-import + # jupyter-client + # matplotlib + # pandas +pytz==2024.1 + # via pandas +pywin32==306 + # via jupyter-core +pyyaml==6.0.1 + # via + # jupytext + # mkdocs + # pybtex + # pymdown-extensions + # pyyaml-env-tag + # swmmanywhere (pyproject.toml) +pyyaml-env-tag==0.1 + # via mkdocs +pyzmq==25.1.2 + # via + # ipykernel + # jupyter-client +rasterio==1.3.9 + # via + # pysheds + # rioxarray + # swmmanywhere (pyproject.toml) +referencing==0.34.0 + # via + # jsonschema + # jsonschema-specifications +regex==2023.12.25 + # via mkdocs-material +requests==2.31.0 + # via + # cdsapi + # mkdocs-bibtex + # mkdocs-material + # osmnx +rioxarray==0.15.1 + # via swmmanywhere (pyproject.toml) +rpds-py==0.18.0 + # via + # jsonschema + # referencing +salib==1.4.8 + # via swmmanywhere (pyproject.toml) +scikit-image==0.22.0 + # via pysheds +scipy==1.12.0 + # via + # netcomp + # pysheds + # salib + # scikit-image + # swmmanywhere (pyproject.toml) +shapely==2.0.3 + # via + # geopandas + # osmnx + # swmmanywhere (pyproject.toml) +six==1.16.0 + # via + # asttokens + # bleach + # fiona + # pybtex + # python-dateutil +smmap==5.0.1 + # via gitdb +snuggs==1.4.7 + # via rasterio +soupsieve==2.5 + # via beautifulsoup4 +stack-data==0.6.3 + # via ipython +swmm-toolkit==0.15.3 + # via pyswmm +tifffile==2024.2.12 + # via scikit-image +tinycss2==1.2.1 + # via nbconvert +toml==0.10.2 + # via jupytext +toolz==0.12.1 + # via cytoolz +tornado==6.4 + # via + # ipykernel + # jupyter-client +tqdm==4.66.2 + # via + # cdsapi + # swmmanywhere (pyproject.toml) +traitlets==5.14.2 + # via + # comm + # ipykernel + # ipython + # jupyter-client + # jupyter-core + # matplotlib-inline + # nbclient + # nbconvert + # nbformat +typing-extensions==4.10.0 + # via + # pydantic + # pydantic-core +tzdata==2024.1 + # via pandas +urllib3==2.2.1 + # via requests +validators==0.23.2 + # via mkdocs-bibtex +watchdog==4.0.0 + # via mkdocs +wcwidth==0.2.13 + # via prompt-toolkit +webencodings==0.5.1 + # via + # bleach + # tinycss2 +win32-setctime==1.1.0 + # via loguru +xarray==2024.2.0 + # via + # rioxarray + # swmmanywhere (pyproject.toml) + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/pyproject.toml b/pyproject.toml index be65c610..6f6d8971 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,6 +65,18 @@ dev = [ "pytest-mypy", "ruff", ] +doc = [ + "mkdocs", + "mkdocs-autorefs", + "mkdocs-bibtex", + "mkdocs-coverage", + "mkdocs-gen-files", + "mkdocs-jupyter", + "mkdocs-material", + "mkdocs-material-extensions", + "mkdocstrings[python]", + "pypandoc", +] [tool.mypy] disallow_any_explicit = false diff --git a/requirements.txt b/requirements.txt index 769bf687..572e6457 100644 --- a/requirements.txt +++ b/requirements.txt @@ -54,29 +54,29 @@ colorama==0.4.6 # tqdm contourpy==1.2.0 # via matplotlib -cramjam==2.7.0 +cramjam==2.8.3 # via fastparquet cycler==0.12.1 # via matplotlib cytoolz==0.12.3 # via swmmanywhere (pyproject.toml) -dill==0.3.7 +dill==0.3.8 # via multiprocess -fastparquet==2023.10.1 +fastparquet==2024.2.0 # via swmmanywhere (pyproject.toml) -fiona==1.9.5 +fiona==1.9.6 # via # geopandas # swmmanywhere (pyproject.toml) -fonttools==4.47.2 +fonttools==4.50.0 # via matplotlib -fsspec==2024.2.0 +fsspec==2024.3.1 # via fastparquet geographiclib==2.0 # via geopy geojson==3.1.0 # via pysheds -geopandas==0.14.2 +geopandas==0.14.3 # via # osmnx # swmmanywhere (pyproject.toml) @@ -88,7 +88,7 @@ gitpython==3.1.42 # via swmmanywhere (pyproject.toml) idna==3.6 # via requests -imageio==2.33.1 +imageio==2.34.0 # via scikit-image joblib==1.3.2 # via swmmanywhere (pyproject.toml) @@ -102,15 +102,15 @@ kiwisolver==1.4.5 # via matplotlib lazy-loader==0.3 # via scikit-image -llvmlite==0.41.1 +llvmlite==0.42.0 # via numba loguru==0.7.2 # via swmmanywhere (pyproject.toml) -matplotlib==3.8.2 +matplotlib==3.8.3 # via # salib # swmmanywhere (pyproject.toml) -multiprocess==0.70.15 +multiprocess==0.70.16 # via salib netcdf4==1.6.5 # via swmmanywhere (pyproject.toml) @@ -122,9 +122,9 @@ networkx==3.2.1 # osmnx # scikit-image # swmmanywhere (pyproject.toml) -numba==0.58.1 +numba==0.59.1 # via pysheds -numpy==1.26.3 +numpy==1.26.4 # via # cftime # contourpy @@ -148,9 +148,9 @@ numpy==1.26.3 # swmmanywhere (pyproject.toml) # tifffile # xarray -osmnx==1.8.1 +osmnx==1.9.1 # via swmmanywhere (pyproject.toml) -packaging==23.2 +packaging==24.0 # via # fastparquet # geopandas @@ -159,7 +159,7 @@ packaging==23.2 # rioxarray # scikit-image # xarray -pandas==2.1.4 +pandas==2.2.1 # via # fastparquet # geopandas @@ -173,13 +173,13 @@ pillow==10.2.0 # imageio # matplotlib # scikit-image -pyarrow==14.0.2 +pyarrow==15.0.2 # via swmmanywhere (pyproject.toml) -pydantic==2.5.3 +pydantic==2.6.4 # via swmmanywhere (pyproject.toml) -pydantic-core==2.14.6 +pydantic-core==2.16.3 # via pydantic -pyparsing==3.1.1 +pyparsing==3.1.2 # via # matplotlib # snuggs @@ -190,13 +190,13 @@ pyproj==3.6.1 # rioxarray pysheds==0.3.5 # via swmmanywhere (pyproject.toml) -pyswmm==1.5.1 +pyswmm==2.0.0 # via swmmanywhere (pyproject.toml) -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 # via # matplotlib # pandas -pytz==2023.3.post1 +pytz==2024.1 # via pandas pyyaml==6.0.1 # via swmmanywhere (pyproject.toml) @@ -205,7 +205,7 @@ rasterio==1.3.9 # pysheds # rioxarray # swmmanywhere (pyproject.toml) -referencing==0.33.0 +referencing==0.34.0 # via # jsonschema # jsonschema-specifications @@ -219,7 +219,7 @@ rpds-py==0.18.0 # via # jsonschema # referencing -salib==1.4.7 +salib==1.4.8 # via swmmanywhere (pyproject.toml) scikit-image==0.22.0 # via pysheds @@ -230,7 +230,7 @@ scipy==1.12.0 # salib # scikit-image # swmmanywhere (pyproject.toml) -shapely==2.0.2 +shapely==2.0.3 # via # geopandas # osmnx @@ -245,7 +245,7 @@ snuggs==1.4.7 # via rasterio swmm-toolkit==0.15.3 # via pyswmm -tifffile==2024.1.30 +tifffile==2024.2.12 # via scikit-image toolz==0.12.1 # via cytoolz @@ -253,17 +253,17 @@ tqdm==4.66.2 # via # cdsapi # swmmanywhere (pyproject.toml) -typing-extensions==4.9.0 +typing-extensions==4.10.0 # via # pydantic # pydantic-core tzdata==2024.1 # via pandas -urllib3==2.1.0 +urllib3==2.2.1 # via requests win32-setctime==1.1.0 # via loguru -xarray==2023.12.0 +xarray==2024.2.0 # via # rioxarray # swmmanywhere (pyproject.toml) From b273bca4167321150ddec52c55cab96fc302ca1d Mon Sep 17 00:00:00 2001 From: Dobson Date: Fri, 22 Mar 2024 12:05:38 +0000 Subject: [PATCH 02/38] Create API reference --- AUTHORS.md => docs/AUTHORS.md | 0 CODE_OF_CONDUCT.md => docs/CODE_OF_CONDUCT.md | 0 CONTRIBUTING.md => docs/CONTRIBUTING.md | 0 {swmmanywhere => docs}/HISTORY.md | 0 docs/reference-geospatial-utilities.md | 3 ++ docs/reference-graph-utilities.md | 3 ++ docs/reference-logging.md | 3 ++ docs/reference-metric-utilities.md | 3 ++ docs/reference-parameters.md | 3 ++ docs/reference-post-processing.md | 3 ++ docs/reference-preprocessing.md | 3 ++ docs/reference.md | 3 ++ mkdocs.yml | 40 +++++++++++++++++++ 13 files changed, 64 insertions(+) rename AUTHORS.md => docs/AUTHORS.md (100%) rename CODE_OF_CONDUCT.md => docs/CODE_OF_CONDUCT.md (100%) rename CONTRIBUTING.md => docs/CONTRIBUTING.md (100%) rename {swmmanywhere => docs}/HISTORY.md (100%) create mode 100644 docs/reference-geospatial-utilities.md create mode 100644 docs/reference-graph-utilities.md create mode 100644 docs/reference-logging.md create mode 100644 docs/reference-metric-utilities.md create mode 100644 docs/reference-parameters.md create mode 100644 docs/reference-post-processing.md create mode 100644 docs/reference-preprocessing.md create mode 100644 docs/reference.md create mode 100644 mkdocs.yml diff --git a/AUTHORS.md b/docs/AUTHORS.md similarity index 100% rename from AUTHORS.md rename to docs/AUTHORS.md diff --git a/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md similarity index 100% rename from CODE_OF_CONDUCT.md rename to docs/CODE_OF_CONDUCT.md diff --git a/CONTRIBUTING.md b/docs/CONTRIBUTING.md similarity index 100% rename from CONTRIBUTING.md rename to docs/CONTRIBUTING.md diff --git a/swmmanywhere/HISTORY.md b/docs/HISTORY.md similarity index 100% rename from swmmanywhere/HISTORY.md rename to docs/HISTORY.md diff --git a/docs/reference-geospatial-utilities.md b/docs/reference-geospatial-utilities.md new file mode 100644 index 00000000..d756135e --- /dev/null +++ b/docs/reference-geospatial-utilities.md @@ -0,0 +1,3 @@ +# Reference for SWMManywhere/geospatial_utilities.py + +::: swmmanywhere.geospatial_utilities diff --git a/docs/reference-graph-utilities.md b/docs/reference-graph-utilities.md new file mode 100644 index 00000000..2e9b697d --- /dev/null +++ b/docs/reference-graph-utilities.md @@ -0,0 +1,3 @@ +# Reference for SWMManywhere/graph_utilities.py + +::: swmmanywhere.graph_utilities diff --git a/docs/reference-logging.md b/docs/reference-logging.md new file mode 100644 index 00000000..03807aa1 --- /dev/null +++ b/docs/reference-logging.md @@ -0,0 +1,3 @@ +# Reference for SWMManywhere/logging.py + +::: swmmanywhere.logging diff --git a/docs/reference-metric-utilities.md b/docs/reference-metric-utilities.md new file mode 100644 index 00000000..4c6c0b35 --- /dev/null +++ b/docs/reference-metric-utilities.md @@ -0,0 +1,3 @@ +# Reference for SWMManywhere/metric_utilties.py + +::: swmmanywhere.metric_utilities diff --git a/docs/reference-parameters.md b/docs/reference-parameters.md new file mode 100644 index 00000000..e21e0e1c --- /dev/null +++ b/docs/reference-parameters.md @@ -0,0 +1,3 @@ +# Reference for SWMManywhere/parameters.py + +::: swmmanywhere.parameters diff --git a/docs/reference-post-processing.md b/docs/reference-post-processing.md new file mode 100644 index 00000000..a07ec01e --- /dev/null +++ b/docs/reference-post-processing.md @@ -0,0 +1,3 @@ +# Reference for SWMManywhere/post_processing.py + +::: swmmanywhere.post_processing diff --git a/docs/reference-preprocessing.md b/docs/reference-preprocessing.md new file mode 100644 index 00000000..bf3a8186 --- /dev/null +++ b/docs/reference-preprocessing.md @@ -0,0 +1,3 @@ +# Reference for SWMManywhere/preprocessing.py + +::: swmmanywhere.preprocessing diff --git a/docs/reference.md b/docs/reference.md new file mode 100644 index 00000000..04c7a5bd --- /dev/null +++ b/docs/reference.md @@ -0,0 +1,3 @@ +# Reference for SWMManywhere/swmmanywhere.py + +::: swmmanywhere.swmmanywhere diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 00000000..7c714fa4 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,40 @@ +site_name: SWMManywhere docs + +theme: + name: "material" + +extra_css: + - stylesheets/extra.css + + +plugins: + - mkdocstrings + - mkdocs-jupyter: + execute: true + - search + # - bibtex: + # bib_file: "./docs/paper/paper.bib" + # csl_file: "./docs/paper/apa.csl" + # cite_inline: false + - coverage: + page_name: coverage # default + html_report_dir: htmlcov # default + # - gen-files: + # scripts: + # - docs/create_class_page.py + +markdown_extensions: + - footnotes + +nav: + - Contributing: CONTRIBUTING.md + - API reference: + - SWMManywhere: reference.md + - Graph utilities: reference-graph-utilities.md + - Geospatial utilities: reference-geospatial-utilities.md + - Metric utilities: reference-metric-utilities.md + - Logging: reference-logging.md + - Parameters: reference-parameters.md + - Post processing: reference-post-processing.md + - Preprocessing: reference-preprocessing.md + - Coverage report: coverage.md \ No newline at end of file From 9e02bc77c52db1df3d27554645627c21ee73f187 Mon Sep 17 00:00:00 2001 From: barneydobson Date: Mon, 25 Mar 2024 16:38:16 +0000 Subject: [PATCH 03/38] Update mathjax --- mkdocs.yml | 16 +++++++++----- swmmanywhere/metric_utilities.py | 36 +++++++++++++++++++------------- 2 files changed, 32 insertions(+), 20 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 7c714fa4..a4f68a93 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -2,14 +2,13 @@ site_name: SWMManywhere docs theme: name: "material" - + extra_css: - stylesheets/extra.css - plugins: - mkdocstrings - - mkdocs-jupyter: + - mkdocs-jupyter: execute: true - search # - bibtex: @@ -21,10 +20,17 @@ plugins: html_report_dir: htmlcov # default # - gen-files: # scripts: - # - docs/create_class_page.py - + # - docs/create_class_page.py + markdown_extensions: - footnotes + - pymdownx.arithmatex: + generic: true + +extra_javascript: + - javascripts/mathjax.js + - https://polyfill.io/v3/polyfill.min.js?features=es6 + - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js nav: - Contributing: CONTRIBUTING.md diff --git a/swmmanywhere/metric_utilities.py b/swmmanywhere/metric_utilities.py index 02ecde5d..fd37fff4 100644 --- a/swmmanywhere/metric_utilities.py +++ b/swmmanywhere/metric_utilities.py @@ -599,13 +599,15 @@ def outlet_pbias_length(real_G: nx.Graph, The percentage bias is calculated as: - .. math:: - - pbias = \\frac{{syn\_length - real\_length}}{{real\_length}} + $$ + pbias = \frac{{syn_{length} - real_{length}}}{{real_{length}}} + $$ where: - - :math:`syn\_length` is the synthetic length, - - :math:`real\_length` is the real length. + + - $syn_{length}$ is the synthetic length, + - $real_{length}$ is the real length. + """ # Identify synthetic and real outlet arcs sg_syn, _ = best_outlet_match(synthetic_G, real_subs) @@ -631,13 +633,15 @@ def outlet_pbias_nmanholes(real_G: nx.Graph, The percentage bias is calculated as: - .. math:: - - pbias = \\frac{{syn\_nnodes - real\_nnodes}}{{real\_nnodes}} + $$ + pbias = \frac{{syn_{nnodes} - real_{nnodes}}}{{real_{nnodes}}} + $$ where: - - :math:`syn\_nnodes` is the number of synthetic nodes, - - :math:`real\_nnodes` is the real number of nodes. + + - $syn_{nnodes}$ is the number of synthetic nodes, + - $real_{nnodes}$ is the real number of nodes. + """ # Identify synthetic and real outlet arcs sg_syn, _ = best_outlet_match(synthetic_G, real_subs) @@ -662,13 +666,15 @@ def outlet_pbias_npipes(real_G: nx.Graph, The percentage bias is calculated as: - .. math:: - - pbias = \\frac{{syn\_nedges - real\_nedges}}{{real\_nedges}} + $$ + pbias = \frac{{syn_{nedges} - real_{nedges}}}{{real_{nedges}}} + $$ where: - - :math:`syn\_nedges` is the number of synthetic edges, - - :math:`real\_nedges` is the real number of edges. + + - $syn_{nedges}$ is the number of synthetic edges, + - $real_{nedges}$ is the real number of edges. + """ # Identify synthetic and real outlet arcs sg_syn, _ = best_outlet_match(synthetic_G, real_subs) From a93bcf2585b3c495ac14709cd0303cb8e9a7d1bc Mon Sep 17 00:00:00 2001 From: barneydobson Date: Tue, 26 Mar 2024 15:37:15 +0000 Subject: [PATCH 04/38] Update logging.py render logging example --- swmmanywhere/logging.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/swmmanywhere/logging.py b/swmmanywhere/logging.py index 6ea63140..87b56aee 100644 --- a/swmmanywhere/logging.py +++ b/swmmanywhere/logging.py @@ -1,6 +1,7 @@ """Logging module for SWMManywhere. Example: +```python >>> import os >>> os.environ["SWMMANYWHERE_VERBOSE"] = "true" >>> # logging is now enabled in any swmmanywhere module @@ -11,6 +12,7 @@ >>> logger.info("This is an info message.") # Write to stdout and file.log This is an info message. >>> os.environ["SWMMANYWHERE_VERBOSE"] = "false" # Disable logging +``` """ import os import sys From 623984a4a9235d92fe45bf8e271933e14d68eae7 Mon Sep 17 00:00:00 2001 From: barneydobson Date: Tue, 26 Mar 2024 17:00:24 +0000 Subject: [PATCH 05/38] Begin quickstart --- docs/index.md | 18 ++++++++++++++++++ docs/notebooks/quickstart.py | 31 +++++++++++++++++++++++++++++++ docs/reference-overview.md | 12 ++++++++++++ mkdocs.yml | 4 +++- 4 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 docs/index.md create mode 100644 docs/notebooks/quickstart.py create mode 100644 docs/reference-overview.md diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..f1f47e98 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,18 @@ +# SWMManywhere +This is the documentation for [SWMManywhere](). It is a software that lets you +derive a synthetic urban drainage network anywhere in the world. + +## Table of contents + - [Home](index.md) + - [Quickstart](./notebooks/quickstart.py) + - [Contributing](CONTRIBUTING.md) + - [API reference](reference-overview.md) + - [SWMManywhere](reference.md) + - [Graph utilities](reference-graph-utilities.md) + - [Geospatial utilities](reference-geospatial-utilities.md) + - [Metric utilities](reference-metric-utilities.md) + - [Logging](reference-logging.md) + - [Parameters](reference-parameters.md) + - [Post processing](reference-post-processing.md) + - [Preprocessing](reference-preprocessing.md) + - [Coverage report](coverage.md) \ No newline at end of file diff --git a/docs/notebooks/quickstart.py b/docs/notebooks/quickstart.py new file mode 100644 index 00000000..5fe2d25e --- /dev/null +++ b/docs/notebooks/quickstart.py @@ -0,0 +1,31 @@ +# %% [markdown] +# # Quickstart +# Note - this script can also be opened in interactive Python if you wanted to +# play around. On the GitHub it is in [docs/demo/scripts]() +# +# %% +# Import modules +from pathlib import Path + +# Make a base directory +base_dir = Path.cwd() / 'swmmanywhere_models' +print(base_dir) +base_dir.mkdir(exist_ok=True, parents=True) + +# %% [markdown] +## API keys +# ... Information here about how to handle API keys +# TODO +# %% [markdown] +## Define configuration file +# The standard use of SWMManywhere is achieved via a `configuration` file. This +# file defines a variety of parameters to use during the creation and running +# of the synthetic SWMM model. +# %% +# Make a config file +config = {'base_dir' : base_dir, + 'project' : 'my_first_swmm', + 'bbox' : [0.05428,51.55847,0.07193,51.56726], + 'api_keys' : base_dir / 'api_keys.yml', + 'graphfcn_list' : ['assign_id'] + } \ No newline at end of file diff --git a/docs/reference-overview.md b/docs/reference-overview.md new file mode 100644 index 00000000..039aae14 --- /dev/null +++ b/docs/reference-overview.md @@ -0,0 +1,12 @@ +# Reference + +Different API sections are documented separately. + +- [SWMManywhere](reference.md) +- [Graph utilities](reference-graph-utilities.md) +- [Geospatial utilities](reference-geospatial-utilities.md) +- [Metric utilities](reference-metric-utilities.md) +- [Logging](reference-logging.md) +- [Parameters](reference-parameters.md) +- [Post processing](reference-post-processing.md) +- [Preprocessing](reference-preprocessing.md) \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index a4f68a93..6b2a6036 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -9,7 +9,7 @@ extra_css: plugins: - mkdocstrings - mkdocs-jupyter: - execute: true + execute: false - search # - bibtex: # bib_file: "./docs/paper/paper.bib" @@ -33,6 +33,8 @@ extra_javascript: - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js nav: + - Home: index.md + - Quickstart: notebooks/quickstart.py - Contributing: CONTRIBUTING.md - API reference: - SWMManywhere: reference.md From c7b36cb0a93c3abeb0e2337bbfb18e3c1d799e48 Mon Sep 17 00:00:00 2001 From: Dobson Date: Mon, 8 Apr 2024 16:04:35 +0100 Subject: [PATCH 06/38] fix linting --- docs/index.md | 30 ++++++++++++++++-------------- docs/notebooks/quickstart.py | 2 ++ docs/reference-overview.md | 2 +- pyproject.toml | 1 + 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/docs/index.md b/docs/index.md index f1f47e98..0c9bc2ab 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,18 +1,20 @@ # SWMManywhere -This is the documentation for [SWMManywhere](). It is a software that lets you + +This is the documentation for SWMManywhere. It is a software that lets you derive a synthetic urban drainage network anywhere in the world. ## Table of contents - - [Home](index.md) - - [Quickstart](./notebooks/quickstart.py) - - [Contributing](CONTRIBUTING.md) - - [API reference](reference-overview.md) - - [SWMManywhere](reference.md) - - [Graph utilities](reference-graph-utilities.md) - - [Geospatial utilities](reference-geospatial-utilities.md) - - [Metric utilities](reference-metric-utilities.md) - - [Logging](reference-logging.md) - - [Parameters](reference-parameters.md) - - [Post processing](reference-post-processing.md) - - [Preprocessing](reference-preprocessing.md) - - [Coverage report](coverage.md) \ No newline at end of file + +- [Home](index.md) +- [Quickstart](./notebooks/quickstart.py) +- [Contributing](CONTRIBUTING.md) +- [API reference](reference-overview.md) + - [SWMManywhere](reference.md) + - [Graph utilities](reference-graph-utilities.md) + - [Geospatial utilities](reference-geospatial-utilities.md) + - [Metric utilities](reference-metric-utilities.md) + - [Logging](reference-logging.md) + - [Parameters](reference-parameters.md) + - [Post processing](reference-post-processing.md) + - [Preprocessing](reference-preprocessing.md) +- [Coverage report](coverage.md) diff --git a/docs/notebooks/quickstart.py b/docs/notebooks/quickstart.py index 5fe2d25e..07f5d17e 100644 --- a/docs/notebooks/quickstart.py +++ b/docs/notebooks/quickstart.py @@ -5,6 +5,8 @@ # # %% # Import modules +from __future__ import annotations + from pathlib import Path # Make a base directory diff --git a/docs/reference-overview.md b/docs/reference-overview.md index 039aae14..7e5c8095 100644 --- a/docs/reference-overview.md +++ b/docs/reference-overview.md @@ -9,4 +9,4 @@ Different API sections are documented separately. - [Logging](reference-logging.md) - [Parameters](reference-parameters.md) - [Post processing](reference-post-processing.md) -- [Preprocessing](reference-preprocessing.md) \ No newline at end of file +- [Preprocessing](reference-preprocessing.md) diff --git a/pyproject.toml b/pyproject.toml index c202696f..f97e06b0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -97,6 +97,7 @@ select = ["D", "E", "F", "I"] # pydocstyle, pycodestyle, Pyflakes, isort [tool.ruff.per-file-ignores] "tests/*" = ["D100", "D104"] +"docs/notebooks/quickstart.py" = ["D100"] [tool.ruff.pydocstyle] convention = "google" From 0b44cd094eaf7ce538fee74e44e0b1b29cc7e3e7 Mon Sep 17 00:00:00 2001 From: Dobson Date: Mon, 8 Apr 2024 16:17:42 +0100 Subject: [PATCH 07/38] Update experimenter.py fix again.. --- swmmanywhere/paper/experimenter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swmmanywhere/paper/experimenter.py b/swmmanywhere/paper/experimenter.py index 88760139..9550c06b 100644 --- a/swmmanywhere/paper/experimenter.py +++ b/swmmanywhere/paper/experimenter.py @@ -142,7 +142,7 @@ def process_parameters(jobid: int, nproc = nproc if nproc is not None else len(X) # Assign jobs based on jobid - job_iter = tlz.partition_all(nproc, range(len(X))) + job_iter = tlz.partition_all(nproc, range(len(gb))) for _ in range(jobid + 1): job_idx = next(job_iter, None) From 2caa99e46d2db34f4be9bd4e931d8829a8f8b81b Mon Sep 17 00:00:00 2001 From: Dobson Date: Mon, 8 Apr 2024 16:41:38 +0100 Subject: [PATCH 08/38] remove doctest --- pyproject.toml | 2 +- swmmanywhere/logging.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index f97e06b0..a7a49120 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -90,7 +90,7 @@ module = "tests.*" disallow_untyped_defs = false [tool.pytest.ini_options] -addopts = "-v -p no:warnings --cov=swmmanywhere --cov-report=html --doctest-modules --ignore=swmmanywhere/__main__.py" +addopts = "-v -p no:warnings --cov=swmmanywhere --cov-report=html --ignore=swmmanywhere/__main__.py" [tool.ruff] select = ["D", "E", "F", "I"] # pydocstyle, pycodestyle, Pyflakes, isort diff --git a/swmmanywhere/logging.py b/swmmanywhere/logging.py index cc1fe226..23ae7f23 100644 --- a/swmmanywhere/logging.py +++ b/swmmanywhere/logging.py @@ -6,9 +6,9 @@ >>> os.environ["SWMMANYWHERE_VERBOSE"] = "true" >>> # logging is now enabled in any swmmanywhere module >>> from swmmanywhere.logging import logger # You can now log yourself ->>> logger.info("This is an info message.") # Write to stdout # doctest: +SKIP +>>> logger.info("This is an info message.") # Write to stdout This is an info message. ->>> logger.add("file.log") # Add a log file # doctest: +SKIP +>>> logger.add("file.log") # Add a log file >>> os.environ["SWMMANYWHERE_VERBOSE"] = "false" # Disable logging ``` """ From 06c4a9f62d5bc07e02051507cfe56d9e5e241684 Mon Sep 17 00:00:00 2001 From: Dobson Date: Tue, 9 Apr 2024 13:56:45 +0100 Subject: [PATCH 09/38] Update swmmanywhere.py - enable null address_overrides - use demo_config for load_config default --- swmmanywhere/swmmanywhere.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/swmmanywhere/swmmanywhere.py b/swmmanywhere/swmmanywhere.py index 737d671f..f50b7c13 100644 --- a/swmmanywhere/swmmanywhere.py +++ b/swmmanywhere/swmmanywhere.py @@ -42,7 +42,7 @@ def swmmanywhere(config: dict) -> tuple[Path, dict | None]: config.get('model_number',None) ) - for key, val in config.get('address_overrides', {}).items(): + for key, val in (config.get('address_overrides') or {}).items(): setattr(addresses, key, val) # Run downloads @@ -217,7 +217,9 @@ def check_parameters_to_sample(config: dict): return config -def load_config(config_path: Path, validation: bool = True): +def load_config(config_path: Path = Path(__file__).parent.parent / 'tests' / \ + 'test_data' / 'demo_config.yml', + validation: bool = True): """Load, validate, and convert Paths in a configuration file. Args: From 101df5b8e644ec5d137fda62c2009fe5c24a777c Mon Sep 17 00:00:00 2001 From: Dobson Date: Tue, 9 Apr 2024 13:58:27 +0100 Subject: [PATCH 10/38] Update quickstart.py --- docs/notebooks/quickstart.py | 62 ++++++++++++++++++++++++++++++++---- 1 file changed, 55 insertions(+), 7 deletions(-) diff --git a/docs/notebooks/quickstart.py b/docs/notebooks/quickstart.py index 07f5d17e..d2216da3 100644 --- a/docs/notebooks/quickstart.py +++ b/docs/notebooks/quickstart.py @@ -7,7 +7,13 @@ # Import modules from __future__ import annotations +import os from pathlib import Path +from pprint import pprint as print + +import yaml + +from swmmanywhere import swmmanywhere # Make a base directory base_dir = Path.cwd() / 'swmmanywhere_models' @@ -18,16 +24,58 @@ ## API keys # ... Information here about how to handle API keys # TODO +# %% +api_keys = {'nasadem_key' : 'b206e65629ac0e53d599e43438560d28'} +with (base_dir / 'api_keys.yml').open('w') as f: + yaml.dump(api_keys, f) + # %% [markdown] ## Define configuration file # The standard use of SWMManywhere is achieved via a `configuration` file. This # file defines a variety of parameters to use during the creation and running # of the synthetic SWMM model. # %% -# Make a config file -config = {'base_dir' : base_dir, - 'project' : 'my_first_swmm', - 'bbox' : [0.05428,51.55847,0.07193,51.56726], - 'api_keys' : base_dir / 'api_keys.yml', - 'graphfcn_list' : ['assign_id'] - } \ No newline at end of file +# Load the default config file +config = swmmanywhere.load_config(validation = False) +print(config) + +# %% [markdown] +# The configuration file is a dictionary that contains a variety of parameters +# that are used to define the synthetic SWMM model and run. We won't go through +# all of them here, but we will explore some key ones in this demo. + +# %% +# Update the information in it to match our current demo + +# A real base directory is needed to store data +config['base_dir'] = base_dir + +# A project name will be a folder in the base directory for this demo +config['project'] = 'my_first_swmm' + +# The bounding box is a list of four values: [minx, miny, maxx, maxy], we will +# pick one in Monaco because the area is small and we can download the building +# data for it very quickly (larger countries will take longer) +config['bbox'] = [7.41680,43.72647,7.43150,43.73578] + +# We need to locate the API keys file +config['api_keys'] = base_dir / 'api_keys.yml' + +# The precipitation downloader is currently broken so we will just use the +# design storm +config['address_overrides'] = {'precipitation' : base_dir.parent.parent.parent /\ + 'swmmanywhere' / 'defs' / 'storm.dat'} + +# %% [markdown] +## Run SWMManywhere +# The `swmmanywhere` function is the main function that generates a synthetic +# SWMM model and runs it. +# +# We will turn on the verbose mode so we can see what is happening. + +# %% +# Run SWMManywhere +os.environ["SWMMANYWHERE_VERBOSE"] = "true" +inp, _ = swmmanywhere.swmmanywhere(config) + +# %% From 398a720069a7a9206a6a14eb4b25a5953136d4b5 Mon Sep 17 00:00:00 2001 From: Dobson Date: Thu, 11 Apr 2024 09:09:04 +0100 Subject: [PATCH 11/38] minimal viable quickstart --- docs/images/andorra_swmm_screenshot.png | Bin 0 -> 57875 bytes docs/notebooks/quickstart.py | 41 +++++++++++++++++++++--- mkdocs.yml | 2 +- swmmanywhere/swmmanywhere.py | 11 ++++--- 4 files changed, 45 insertions(+), 9 deletions(-) create mode 100644 docs/images/andorra_swmm_screenshot.png diff --git a/docs/images/andorra_swmm_screenshot.png b/docs/images/andorra_swmm_screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..b58bdb062933ef56663232f6bd954cef897f124d GIT binary patch literal 57875 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 hJ$mb=gNZRVU?M tuple[Path, dict | None]: f'results.{addresses.extension}') # Get the real results + real_config = config.get('real', {}) + + if not real_config or \ + not (real_config.get('results') or real_config.get('inp')): + logger.info("No real network provided, returning SWMM .inp file.") + return addresses.inp, None + if config['real']['results']: logger.info("Loading real results.") - # TODO.. bit messy real_results = pd.read_parquet(config['real']['results']) elif config['real']['inp']: logger.info("Running the real model.") @@ -106,9 +112,6 @@ def swmmanywhere(config: dict) -> tuple[Path, dict | None]: if os.getenv("SWMMANYWHERE_VERBOSE", "false").lower() == "true": real_results.to_parquet(config['real']['inp'].parent /\ f'real_results.{addresses.extension}') - else: - logger.info("No real network provided, returning SWMM .inp file.") - return addresses.inp, None # Iterate the metrics logger.info("Iterating metrics.") From 415b4ec6c7ff8060b8c37456d8bc07f8c38fd4d2 Mon Sep 17 00:00:00 2001 From: Dobson Date: Mon, 22 Apr 2024 14:01:07 +0100 Subject: [PATCH 12/38] Update publish.yml Publish mkdocs on release (copied from wsimod) --- .github/workflows/publish.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 3942281f..228edfb1 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -4,6 +4,23 @@ jobs: test: uses: ./.github/workflows/ci.yml + publish-docs: + needs: publish-PyPI + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 + with: + python-version: "3.11" + + - name: Install dependencies + run: pip install -r doc-requirements.txt + + - name: Deploy Docs + run: mkdocs gh-deploy --force + # publish: # runs-on: ubuntu-latest # needs: test From 5c5ad49c3ca9680070830f7b3cb6d9d57a01d437 Mon Sep 17 00:00:00 2001 From: Dobson Date: Mon, 22 Apr 2024 15:13:04 +0100 Subject: [PATCH 13/38] Update metric_utilities.py format equations properly --- swmmanywhere/metric_utilities.py | 46 ++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/swmmanywhere/metric_utilities.py b/swmmanywhere/metric_utilities.py index 47f98e5a..09dcb377 100644 --- a/swmmanywhere/metric_utilities.py +++ b/swmmanywhere/metric_utilities.py @@ -216,13 +216,17 @@ def pbias(y: np.ndarray, Calculate the percent bias: $$ - pbias = \frac{{syn_{length} - real_{length}}}{{real_{length}}} + PBIAS = \frac{\sum_{i=1}^{n} (Q_{sim,i} - Q_{obs,i})} + {\sum_{i=1}^{n} Q_{obs,i}} + \times 100 $$ where: - - $syn_{length}$ is the synthetic length, - - $real_{length}$ is the real length. + - \(Q_{\text{sim},i}\) is the simulated value at \(i\), + - \(Q_{\text{obs},i}\) is the observed value at \(i\), + - \(n\) is the number of observations. + Args: y (np.ndarray): The real data. @@ -239,7 +243,21 @@ def pbias(y: np.ndarray, @register_coef def nse(y: np.ndarray, yhat: np.ndarray) -> float: - """Calculate Nash-Sutcliffe efficiency (NSE). + r"""Calculate Nash-Sutcliffe efficiency (NSE). + + Calculate the Nash-Sutcliffe efficiency (NSE): + + $$ + NSE = 1 - \frac{\sum_{i=1}^{n} (Q_{obs,i} - Q_{sim,i})^2} + {\sum_{i=1}^{n} (Q_{obs,i} - \overline{Q}_{obs})^2} + $$ + + where: + + - $Q_{obs,i}$ is the observed value at time $i$, + - $Q_{sim,i}$ is the simulated value at time $i$, + - $\overline{Q}_{obs}$ is the mean observed value over the simulation period, + - $n$ is the number of time steps in the simulation period. Args: y (np.array): Observed data array. @@ -254,8 +272,26 @@ def nse(y: np.ndarray, @register_coef def kge(y: np.ndarray,yhat: np.ndarray) -> float: - """Calculate the Kling-Gupta Efficiency (KGE) between simulated and observed data. + r"""Calculate the Kling-Gupta Efficiency (KGE) between simulated and observed data. + Calculate KGE: + $$ + KGE = 1 - + \sqrt{ (r - 1)^2 + + (\frac{\sigma_{sim}}{\sigma_{obs}} - 1)^2 + + (\frac{\mu_{sim}}{\mu_{obs}} - 1)^2 + } + $$ + + where: + + - $r$ is the correlation coefficient between observed and simulated value, + - $\sigma_{sim}$ and $\sigma_{obs}$ are the standard deviations of the + simulated and observed value, respectively, + - $\mu_{sim}$ and $\mu_{obs}$ are the means of the simulated and observed + value, respectively. + + Args: y (np.array): Observed data array. yhat (np.array): Simulated data array. From 7b80941c0a1937bfe8e411fa27f9f321096d4b2c Mon Sep 17 00:00:00 2001 From: Dobson Date: Thu, 25 Apr 2024 09:35:12 +0100 Subject: [PATCH 14/38] Update graph_utilities.py format list --- swmmanywhere/graph_utilities.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/swmmanywhere/graph_utilities.py b/swmmanywhere/graph_utilities.py index d042fd91..410bd393 100644 --- a/swmmanywhere/graph_utilities.py +++ b/swmmanywhere/graph_utilities.py @@ -233,10 +233,12 @@ def __call__(self, This function removes links that are not allowable for pipes. The non- allowable links are specified in the `omit_edges` attribute of the topology_derivation parameter. There two cases handled: + 1. The `highway` property of the edge. In `osmnx`, `highway` is a category that contains the road type, e.g., motorway, trunk, primary. If the edge contains a value in the `highway` property that is in `omit_edges`, the edge is removed. + 2. Any other properties of the edge that are in `omit_edges`. If the property is not null in the edge data, the edge is removed. e.g., if `bridge` is in `omit_edges` and the `bridge` entry of the edge From 59a3d30373b8b61c217b05c5457cf20057412dc7 Mon Sep 17 00:00:00 2001 From: Dobson Date: Wed, 12 Jun 2024 16:07:20 +0100 Subject: [PATCH 15/38] Update figure and fix merge --- docs/images/andorra_swmm_screenshot.png | Bin 57875 -> 92177 bytes docs/notebooks/quickstart.py | 10 ++++++++-- swmmanywhere/swmmanywhere.py | 7 ++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/docs/images/andorra_swmm_screenshot.png b/docs/images/andorra_swmm_screenshot.png index b58bdb062933ef56663232f6bd954cef897f124d..9ef32f13a2a4420d3e26f3e7c168200ae92768b4 100644 GIT binary patch literal 92177 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 literal 57875 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 hJ$mb=gNZRVU?M tuple[Path, dict | None]: f'results.{addresses.extension}') # Get the real results + if not config.get('real', None): + logger.info("No real data provided.") + return addresses.inp, None + if config['real'].get('results',None): logger.info("Loading real results.") real_results = pd.read_parquet(config['real']['results']) @@ -253,7 +257,8 @@ def save_config(config: dict, config_path: Path): """ yaml_dump(config, config_path.open('w')) -def load_config(config_path: Path, +def load_config(config_path: Path = Path(__file__).parent.parent / 'tests' / \ + 'test_data' / 'demo_config.yml', validation: bool = True, schema_fid: Path | None = None): """Load, validate, and convert Paths in a configuration file. From 14ee7cf85afad106edeea22f05a4ec16029d40cf Mon Sep 17 00:00:00 2001 From: Dobson Date: Wed, 12 Jun 2024 16:10:55 +0100 Subject: [PATCH 16/38] update equation in relerror --- swmmanywhere/metric_utilities.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/swmmanywhere/metric_utilities.py b/swmmanywhere/metric_utilities.py index a14e7daf..023dafc9 100644 --- a/swmmanywhere/metric_utilities.py +++ b/swmmanywhere/metric_utilities.py @@ -216,8 +216,8 @@ def relerror(y: np.ndarray, Calculate the relative error: $$ - relerror = \frac{\mean(synthetic) - \mean(real)} - {\mean(real)} + relerror = \frac{mean(synthetic) - mean(real)} + {mean(real)} $$ where: From ff298c2624d72d8b7ff1b02ce73916936f75005c Mon Sep 17 00:00:00 2001 From: Dobson Date: Wed, 12 Jun 2024 16:11:21 +0100 Subject: [PATCH 17/38] Update demo_config.yml remove stuff for the experimenter schema --- tests/test_data/demo_config.yml | 45 +++------------------------------ 1 file changed, 4 insertions(+), 41 deletions(-) diff --git a/tests/test_data/demo_config.yml b/tests/test_data/demo_config.yml index f1c2182d..3536f69f 100644 --- a/tests/test_data/demo_config.yml +++ b/tests/test_data/demo_config.yml @@ -43,6 +43,7 @@ metric_list: - outlet_relerror_length - outlet_relerror_npipes - outlet_relerror_nmanholes + - outlet_relerror_diameter - outlet_nse_flooding - outlet_kge_flooding - outlet_relerror_flooding @@ -52,48 +53,10 @@ metric_list: - subcatchment_nse_flooding - subcatchment_kge_flooding - subcatchment_relerror_flooding - - nc_deltacon0 - - nc_laplacian_dist - - nc_laplacian_norm_dist - - nc_adjacency_dist - - nc_vertex_edge_distance - - nc_resistance_distance - bias_flood_depth - kstest_edge_betweenness - kstest_betweenness - outlet_kstest_diameters -parameter_overrides: - hydraulic_design: - diameters: - - 0.15 - - 0.225 - - 0.3 - - 0.375 - - 0.45 - - 0.525 - - 0.6 - - 0.675 - - 0.75 - - 0.825 - - 0.9 - - 1.125 - - 1.35 - - 1.5 - - 1.95 - - 3.0 -address_overrides: null -parameters_to_sample: - - min_v: [0.5, 1.5] - - max_v - - max_fr - - precipitation - - outlet_length - - chahinian_slope_scaling - - length_scaling - - contributing_area_scaling - - chahinian_slope_exponent - - length_exponent - - contributing_area_exponent - - lane_width - - max_street_length -sample_magnitude: 9 \ No newline at end of file + - nc_deltacon0 + - nc_laplacian_dist + - nc_vertex_edge_distance \ No newline at end of file From a179340702742e55145f056a8000a8399ccc11e7 Mon Sep 17 00:00:00 2001 From: Dobson Date: Wed, 12 Jun 2024 16:33:05 +0100 Subject: [PATCH 18/38] Update swmmanywhere.py make get real better --- swmmanywhere/swmmanywhere.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/swmmanywhere/swmmanywhere.py b/swmmanywhere/swmmanywhere.py index f5d1a7e1..ba255249 100644 --- a/swmmanywhere/swmmanywhere.py +++ b/swmmanywhere/swmmanywhere.py @@ -115,21 +115,20 @@ def swmmanywhere(config: dict) -> tuple[Path, dict | None]: f'results.{addresses.extension}') # Get the real results - if not config.get('real', None): - logger.info("No real data provided.") - return addresses.inp, None - - if config['real'].get('results',None): + if config.get('real', {}).get('results',None): logger.info("Loading real results.") real_results = pd.read_parquet(config['real']['results']) - elif config['real']['inp']: + elif config.get('real', {}).get('inp',None): logger.info("Running the real model.") real_results = run(config['real']['inp'], **config['run_settings']) if verbose(): real_results.to_parquet(config['real']['inp'].parent /\ f'real_results.{addresses.extension}') - + else: + logger.info("No real network provided, returning SWMM .inp file.") + return addresses.inp, None + # Iterate the metrics logger.info("Iterating metrics.") metrics = iterate_metrics(synthetic_results, @@ -354,7 +353,9 @@ def run(model: Path, ind = 0 logger.info(f"Starting simulation for: {model}") - progress_bar = tqdm(total=duration, disable = not verbose()) + progress_bar = tqdm(total=duration, + disable = not verbose() + ) offset = 0 while (offset <= duration) & \ From 826c44123b46e89461205057e38c700a48754662 Mon Sep 17 00:00:00 2001 From: Dobson Date: Wed, 12 Jun 2024 16:34:34 +0100 Subject: [PATCH 19/38] Update mkdocs.yml remove old wsimod stuff --- mkdocs.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index fb9ac8a9..b4d21765 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -11,16 +11,9 @@ plugins: - mkdocs-jupyter: execute: true - search - # - bibtex: - # bib_file: "./docs/paper/paper.bib" - # csl_file: "./docs/paper/apa.csl" - # cite_inline: false - coverage: page_name: coverage # default html_report_dir: htmlcov # default - # - gen-files: - # scripts: - # - docs/create_class_page.py markdown_extensions: - footnotes From 0e5ccd38e4cb2845d7756f1b84c0f69dcb5ff094 Mon Sep 17 00:00:00 2001 From: Dobson Date: Wed, 12 Jun 2024 16:36:53 +0100 Subject: [PATCH 20/38] Fix merge from main --- pyproject.toml | 2 +- swmmanywhere/logging.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 68825ed4..d4af3766 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -89,7 +89,7 @@ module = "tests.*" disallow_untyped_defs = false [tool.pytest.ini_options] -addopts = "-v -p no:warnings --cov=swmmanywhere --cov-report=html --ignore=swmmanywhere/__main__.py" +addopts = "-v -p no:warnings --cov=swmmanywhere --cov-report=html --doctest-modules --ignore=swmmanywhere/__main__.py" [tool.ruff] select = ["D", "E", "F", "I"] # pydocstyle, pycodestyle, Pyflakes, isort diff --git a/swmmanywhere/logging.py b/swmmanywhere/logging.py index c335aa43..ce7fa655 100644 --- a/swmmanywhere/logging.py +++ b/swmmanywhere/logging.py @@ -6,10 +6,10 @@ >>> os.environ["SWMMANYWHERE_VERBOSE"] = "true" >>> # logging is now enabled in any swmmanywhere module >>> from swmmanywhere.logging import logger # You can now log yourself ->>> logger.info("This is an info message.") # Write to stdout +>>> logger.info("This is an info message.") # Write to stdout # doctest: +SKIP This is an info message. >>> logger.add("file.log") # Add a log file ->>> os.environ["SWMMANYWHERE_VERBOSE"] = "false" # Disable logging +>>> os.environ["SWMMANYWHERE_VERBOSE"] = "false" # Disable logging # doctest: +SKIP ``` """ from __future__ import annotations From 0e1c82d85d92c5c808697c7d299f416e5195fe94 Mon Sep 17 00:00:00 2001 From: Dobson Date: Wed, 12 Jun 2024 16:38:14 +0100 Subject: [PATCH 21/38] Update swmmanywhere.py fix merge a bit more --- swmmanywhere/swmmanywhere.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/swmmanywhere/swmmanywhere.py b/swmmanywhere/swmmanywhere.py index ba255249..41196b53 100644 --- a/swmmanywhere/swmmanywhere.py +++ b/swmmanywhere/swmmanywhere.py @@ -128,7 +128,7 @@ def swmmanywhere(config: dict) -> tuple[Path, dict | None]: else: logger.info("No real network provided, returning SWMM .inp file.") return addresses.inp, None - + # Iterate the metrics logger.info("Iterating metrics.") metrics = iterate_metrics(synthetic_results, @@ -353,9 +353,7 @@ def run(model: Path, ind = 0 logger.info(f"Starting simulation for: {model}") - progress_bar = tqdm(total=duration, - disable = not verbose() - ) + progress_bar = tqdm(total=duration, disable = not verbose()) offset = 0 while (offset <= duration) & \ From a4d686c27f44f53e8de5ad8b0748293a689fbc93 Mon Sep 17 00:00:00 2001 From: barneydobson Date: Mon, 17 Jun 2024 16:33:57 +0100 Subject: [PATCH 22/38] Update docs/notebooks/quickstart.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Diego Alonso Álvarez <6095790+dalonsoa@users.noreply.github.com> --- docs/notebooks/quickstart.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/notebooks/quickstart.py b/docs/notebooks/quickstart.py index abcf39ff..9597cf84 100644 --- a/docs/notebooks/quickstart.py +++ b/docs/notebooks/quickstart.py @@ -1,7 +1,7 @@ # %% [markdown] # # Quickstart # Note - this script can also be opened in interactive Python if you wanted to -# play around. On the GitHub it is in [docs/demo/scripts]() +# play around. On the GitHub it is in [docs/notebooks]() # # %% # Import modules From 966a9c72805be995656bcb417646cd4457e9c88c Mon Sep 17 00:00:00 2001 From: Dobson Date: Tue, 18 Jun 2024 13:34:05 +0100 Subject: [PATCH 23/38] Update quickstart.py remove api bit --- docs/notebooks/quickstart.py | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/docs/notebooks/quickstart.py b/docs/notebooks/quickstart.py index 9597cf84..e86e7124 100644 --- a/docs/notebooks/quickstart.py +++ b/docs/notebooks/quickstart.py @@ -12,7 +12,6 @@ from pprint import pprint as print import pandas as pd -import yaml from swmmanywhere import swmmanywhere @@ -21,15 +20,6 @@ print(base_dir) base_dir.mkdir(exist_ok=True, parents=True) -# %% [markdown] -## API keys -# ... Information here about how to handle API keys -# TODO -# %% -api_keys = {'nasadem_key' : 'b206e65629ac0e53d599e43438560d28'} -with (base_dir / 'api_keys.yml').open('w') as f: - yaml.dump(api_keys, f) - # %% [markdown] ## Define configuration file # The standard use of SWMManywhere is achieved via a `configuration` file. This @@ -59,11 +49,8 @@ # data for it very quickly (larger countries will take longer) config['bbox'] = [1.52740,42.50524,1.54273,42.51259] -# We need to locate the API keys file -config['api_keys'] = base_dir / 'api_keys.yml' - -# The precipitation downloader is currently broken so we will just use the -# design storm +# A precipitation downloader will be added in the future so we will just use +# the design storm config['address_overrides'] = {'precipitation' : Path(swmmanywhere.__file__).parent / 'defs' / 'storm.dat'} From 3ab4678f1274773ac3bd9b80785872c34373c371 Mon Sep 17 00:00:00 2001 From: Dobson Date: Thu, 20 Jun 2024 15:48:50 +0100 Subject: [PATCH 24/38] move demo to defs --- .../test_data => swmmanywhere/defs}/demo_config.yml | 0 swmmanywhere/swmmanywhere.py | 3 +-- tests/test_swmmanywhere.py | 12 +++++------- 3 files changed, 6 insertions(+), 9 deletions(-) rename {tests/test_data => swmmanywhere/defs}/demo_config.yml (100%) diff --git a/tests/test_data/demo_config.yml b/swmmanywhere/defs/demo_config.yml similarity index 100% rename from tests/test_data/demo_config.yml rename to swmmanywhere/defs/demo_config.yml diff --git a/swmmanywhere/swmmanywhere.py b/swmmanywhere/swmmanywhere.py index 8d4440ae..cef2547b 100644 --- a/swmmanywhere/swmmanywhere.py +++ b/swmmanywhere/swmmanywhere.py @@ -254,8 +254,7 @@ def save_config(config: dict, config_path: Path): """ yaml_dump(config, config_path.open('w')) -def load_config(config_path: Path = Path(__file__).parent.parent / 'tests' / \ - 'test_data' / 'demo_config.yml', +def load_config(config_path: Path = Path(__file__).parent / 'defs' / 'demo_config.yml', validation: bool = True, schema_fid: Path | None = None): """Load, validate, and convert Paths in a configuration file. diff --git a/tests/test_swmmanywhere.py b/tests/test_swmmanywhere.py index fb8899e4..3d26a538 100644 --- a/tests/test_swmmanywhere.py +++ b/tests/test_swmmanywhere.py @@ -48,7 +48,7 @@ def test_swmmanywhere(): # Load the config test_data_dir = Path(__file__).parent / 'test_data' defs_dir = Path(__file__).parent.parent / 'swmmanywhere' / 'defs' - with (test_data_dir / 'demo_config.yml').open('r') as f: + with (defs_dir / 'demo_config.yml').open('r') as f: config = yaml.safe_load(f) # Set some test values @@ -103,7 +103,6 @@ def test_swmmanywhere(): def test_load_config_file_validation(): """Test the file validation of the config.""" with tempfile.TemporaryDirectory() as temp_dir: - test_data_dir = Path(__file__).parent / 'test_data' defs_dir = Path(__file__).parent.parent / 'swmmanywhere' / 'defs' base_dir = Path(temp_dir) @@ -112,7 +111,7 @@ def test_load_config_file_validation(): swmmanywhere.load_config(base_dir / 'test_config.yml') assert "test_config.yml" in str(exc_info.value) - with (test_data_dir / 'demo_config.yml').open('r') as f: + with (defs_dir / 'demo_config.yml').open('r') as f: config = yaml.safe_load(f) # Correct and avoid filevalidation errors @@ -130,11 +129,11 @@ def test_load_config_file_validation(): def test_load_config_schema_validation(): """Test the schema validation of the config.""" with tempfile.TemporaryDirectory() as temp_dir: - test_data_dir = Path(__file__).parent / 'test_data' + defs_dir = Path(__file__).parent.parent / 'swmmanywhere' / 'defs' base_dir = Path(temp_dir) # Load the config - with (test_data_dir / 'demo_config.yml').open('r') as f: + with (defs_dir / 'demo_config.yml').open('r') as f: config = yaml.safe_load(f) # Make an edit not to schema @@ -152,10 +151,9 @@ def test_save_config(): """Test the save_config function.""" with tempfile.TemporaryDirectory() as temp_dir: temp_dir = Path(temp_dir) - test_data_dir = Path(__file__).parent / 'test_data' defs_dir = Path(__file__).parent.parent / 'swmmanywhere' / 'defs' - with (test_data_dir / 'demo_config.yml').open('r') as f: + with (defs_dir / 'demo_config.yml').open('r') as f: config = yaml.safe_load(f) # Correct and avoid filevalidation errors From 2de9574d150f376eda058fe8892aa714f0c35def Mon Sep 17 00:00:00 2001 From: Dobson Date: Thu, 20 Jun 2024 15:49:20 +0100 Subject: [PATCH 25/38] Update .gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 3a6c1aee..b17a5bb4 100644 --- a/.gitignore +++ b/.gitignore @@ -130,3 +130,6 @@ dmypy.json # Pysheds cache cache/ + +# Documentation generated models +swmmanywhere_models/ \ No newline at end of file From 73eee70d41e332b7a4a846e4711ae370d354cac4 Mon Sep 17 00:00:00 2001 From: Dobson Date: Fri, 21 Jun 2024 09:04:30 +0100 Subject: [PATCH 26/38] update minimal reqs --- swmmanywhere/defs/schema.yml | 2 +- swmmanywhere/swmmanywhere.py | 26 ++++++++++++++++++++++++-- tests/test_swmmanywhere.py | 10 ++++++++++ 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/swmmanywhere/defs/schema.yml b/swmmanywhere/defs/schema.yml index abc7b6a0..87c8106a 100644 --- a/swmmanywhere/defs/schema.yml +++ b/swmmanywhere/defs/schema.yml @@ -30,4 +30,4 @@ properties: metric_list: {type: array, items: {type: string}} address_overrides: {type: ['object', 'null']} parameter_overrides: {type: ['object', 'null']} -required: [base_dir, project, bbox, graphfcn_list] \ No newline at end of file +required: [base_dir, project, bbox] \ No newline at end of file diff --git a/swmmanywhere/swmmanywhere.py b/swmmanywhere/swmmanywhere.py index cef2547b..855b066d 100644 --- a/swmmanywhere/swmmanywhere.py +++ b/swmmanywhere/swmmanywhere.py @@ -18,6 +18,22 @@ from swmmanywhere.utilities import yaml_dump, yaml_load +def _check_defaults(config: dict) -> dict: + """Check the config for needed values and add them from defaults if missing. + + Args: + config (dict): The configuration. + + Returns: + dict: The configuration with defaults added. + """ + config_ = load_config(validation=False) + for key in ['run_settings', 'graphfcn_list', 'metric_list']: + if key not in config: + config[key] = config_[key] + + return config + def swmmanywhere(config: dict) -> tuple[Path, dict | None]: """Run SWMManywhere processes. @@ -50,6 +66,11 @@ def swmmanywhere(config: dict) -> tuple[Path, dict | None]: for key, val in config.get('address_overrides', {}).items(): logger.info(f"Setting {key} to {val}") setattr(addresses, key, val) + + # Check for defaults + config = _check_defaults(config) + if not addresses.precipitation.exists(): + addresses.precipitation = Path(__file__).parent / 'defs' / 'storm.dat' # Load the parameters and perform any manual overrides logger.info("Loading and setting parameters.") @@ -100,9 +121,10 @@ def swmmanywhere(config: dict) -> tuple[Path, dict | None]: G.graph['crs'] ) save_graph(G, addresses.graph) + # Write to .inp synthetic_write(addresses) - + # Run the model logger.info("Running the synthetic model.") synthetic_results = run(addresses.inp, @@ -126,7 +148,7 @@ def swmmanywhere(config: dict) -> tuple[Path, dict | None]: else: logger.info("No real network provided, returning SWMM .inp file.") return addresses.inp, None - + # Iterate the metrics logger.info("Iterating metrics.") metrics = iterate_metrics(synthetic_results, diff --git a/tests/test_swmmanywhere.py b/tests/test_swmmanywhere.py index 3d26a538..89e82a25 100644 --- a/tests/test_swmmanywhere.py +++ b/tests/test_swmmanywhere.py @@ -166,3 +166,13 @@ def test_save_config(): # Reload to check OK config = swmmanywhere.load_config(temp_dir / 'test.yml') + +@pytest.mark.downloads +def test_minimal_req(): + """Test SWMManywhere with minimal info.""" + with tempfile.TemporaryDirectory() as temp_dir: + config = {'base_dir' : Path(temp_dir), + 'project' : 'my_test', + 'bbox' : [1.52740,42.50524,1.54273,42.51259]} + + swmmanywhere.swmmanywhere(config) \ No newline at end of file From 5118a18c0fc29b83e3036a010864c1575bc812ef Mon Sep 17 00:00:00 2001 From: Dobson Date: Fri, 21 Jun 2024 10:00:06 +0100 Subject: [PATCH 27/38] Create quickstart.md start cli quickstart --- docs/quickstart.md | 49 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 docs/quickstart.md diff --git a/docs/quickstart.md b/docs/quickstart.md new file mode 100644 index 00000000..3f4d1992 --- /dev/null +++ b/docs/quickstart.md @@ -0,0 +1,49 @@ +# SWMManywhere quickstart + +`swmmanywhere` is a Python tool to synthesise Urban Drainage Models (UDM) anywhere in the world. +It handles everything from data acquisition to running the UDM in the [SWMM](https://www.epa.gov/sites/default/files/2019-02/documents/epaswmm5_1_manual_master_8-2-15.pdf) software. + +## Configuration + +It is primarily designed to be used via a Command Line Interface (CLI). +The user provides a `config` file address that specifies a variety of options to customise the synthesis process. +However, the minimum requirements for a user to provide are simply: + +- a base directory, +- a project name, +- a bounding box that specifies the latitude and longitude (EPSG:4326) of the bottom left and upper right corners of the region within which to create the UDM. + +We can define a simple `.yml` file here: + +```yml +base_dir: /path/to/base/directory +project: my_first_swmm +bbox: [1.52740,42.50524,1.54273,42.51259] +``` + +## Run `swmmanywhere` + +The basic command is: + +```sh +python -m swmmanywhere --config_path=/path/to/file.yml +``` + +which will create a SWMM input file (`.inp`) at the file location: `//bbox_1/model_1/model_1.inp`. + +## Use your model + +If you prefer GUIs then the easiest thing now is to download the [SWMM software](https://www.epa.gov/water-research/storm-water-management-model-swmm) and load your model in there. +The example above looks as follows: + +![SWMM Model](../../images/andorra_swmm_screenshot.png) + +From here you can run or edit your model. + +If you want to investigate your model in GIS, then the geospatial data that was formatted into the model (`.inp`) file is also available at: + +```text +//bbox_1/model_1/nodes.geojson +//bbox_1/model_1/edges.geojson +//bbox_1/model_1/subcatchments.geojson +``` From bede75385f6c22de846083e3684520eb31a24ef5 Mon Sep 17 00:00:00 2001 From: Dobson Date: Fri, 21 Jun 2024 10:47:54 +0100 Subject: [PATCH 28/38] Update to run with minimal config --- docs/images/andorra_swmm_screenshot.png | Bin 92177 -> 63890 bytes docs/index.md | 2 +- docs/quickstart.md | 23 ++++++++++++++++------- mkdocs.yml | 6 ++++-- swmmanywhere/geospatial_utilities.py | 16 +++++++++++----- 5 files changed, 32 insertions(+), 15 deletions(-) diff --git a/docs/images/andorra_swmm_screenshot.png b/docs/images/andorra_swmm_screenshot.png index 9ef32f13a2a4420d3e26f3e7c168200ae92768b4..73eb367f36a67ab7725246ac153a6cb7dad20651 100644 GIT binary patch literal 63890 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 V9{)|T+rI;Uw#Uy}lPoVq{}=boyBz=k literal 92177 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 diff --git a/docs/index.md b/docs/index.md index 0c9bc2ab..96406434 100644 --- a/docs/index.md +++ b/docs/index.md @@ -6,7 +6,7 @@ derive a synthetic urban drainage network anywhere in the world. ## Table of contents - [Home](index.md) -- [Quickstart](./notebooks/quickstart.py) +- [Quickstart](quickstart.md) - [Contributing](CONTRIBUTING.md) - [API reference](reference-overview.md) - [SWMManywhere](reference.md) diff --git a/docs/quickstart.md b/docs/quickstart.md index 3f4d1992..8e7b363c 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -1,11 +1,11 @@ -# SWMManywhere quickstart +# Quickstart -`swmmanywhere` is a Python tool to synthesise Urban Drainage Models (UDM) anywhere in the world. +SWMManywhere is a Python tool to synthesise Urban Drainage Models (UDM) anywhere in the world. It handles everything from data acquisition to running the UDM in the [SWMM](https://www.epa.gov/sites/default/files/2019-02/documents/epaswmm5_1_manual_master_8-2-15.pdf) software. ## Configuration -It is primarily designed to be used via a Command Line Interface (CLI). +SWMManywhere is primarily designed to be used via a Command Line Interface (CLI). The user provides a `config` file address that specifies a variety of options to customise the synthesis process. However, the minimum requirements for a user to provide are simply: @@ -13,7 +13,7 @@ However, the minimum requirements for a user to provide are simply: - a project name, - a bounding box that specifies the latitude and longitude (EPSG:4326) of the bottom left and upper right corners of the region within which to create the UDM. -We can define a simple `.yml` file here: +We can define a simple configuration `.yml` file here: ```yml base_dir: /path/to/base/directory @@ -21,7 +21,7 @@ project: my_first_swmm bbox: [1.52740,42.50524,1.54273,42.51259] ``` -## Run `swmmanywhere` +## Run SWMManywhere The basic command is: @@ -29,7 +29,11 @@ The basic command is: python -m swmmanywhere --config_path=/path/to/file.yml ``` -which will create a SWMM input file (`.inp`) at the file location: `//bbox_1/model_1/model_1.inp`. +which will create a SWMM input file (`.inp`) at the file location: + +```text +//bbox_1/model_1/model_1.inp +``` ## Use your model @@ -40,10 +44,15 @@ The example above looks as follows: From here you can run or edit your model. -If you want to investigate your model in GIS, then the geospatial data that was formatted into the model (`.inp`) file is also available at: +If you want to investigate your model in GIS, then the geospatial data that was formatted into the model file (`model_1.inp`) is also available at: ```text //bbox_1/model_1/nodes.geojson //bbox_1/model_1/edges.geojson //bbox_1/model_1/subcatchments.geojson ``` + +## Not happy with your model? + +Then it sounds like you want to explore the wide range of customisability that SWMManywhere offers! +See our notebooks to understand what is going on in greater detail and how to create better synthetic UDMs. diff --git a/mkdocs.yml b/mkdocs.yml index b4d21765..6f034f92 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -2,6 +2,8 @@ site_name: SWMManywhere docs theme: name: "material" + palette: + primary: 'cyan' extra_css: - stylesheets/extra.css @@ -9,7 +11,7 @@ extra_css: plugins: - mkdocstrings - mkdocs-jupyter: - execute: true + execute: false - search - coverage: page_name: coverage # default @@ -27,7 +29,7 @@ extra_javascript: nav: - Home: index.md - - Quickstart: notebooks/quickstart.py + - Quickstart: quickstart.md - Contributing: CONTRIBUTING.md - API reference: - SWMManywhere: reference.md diff --git a/swmmanywhere/geospatial_utilities.py b/swmmanywhere/geospatial_utilities.py index 16743594..2350e6e5 100644 --- a/swmmanywhere/geospatial_utilities.py +++ b/swmmanywhere/geospatial_utilities.py @@ -31,7 +31,7 @@ from shapely.strtree import STRtree from tqdm.auto import tqdm -from swmmanywhere.logging import verbose +from swmmanywhere.logging import logger, verbose os.environ['NUMBA_NUM_THREADS'] = '1' import pyflwdir # noqa: E402 @@ -666,10 +666,16 @@ def derive_subbasins_streamorder(fid: Path, # Identify stream order subbasins, _ = flw.subbasins_streamorder(min_sto=streamorder) - if np.unique(subbasins.reshape(-1)).shape[0] == 1: - raise ValueError("""No subbasins found in derive_subbasins_streamorder. - Use a lower `subcatchment_derivation.subbasin_streamorder` and - probably check your DEM.""") + streamorder_ = streamorder + while np.unique(subbasins.reshape(-1)).shape[0] == 1: + subbasins, _ = flw.subbasins_streamorder(min_sto=streamorder_) + streamorder_ -= 1 + + if streamorder_ != streamorder: + logger.warning(f"""No subbasins found in `derive_subbasins_streamorder`. + Using a lower `subcatchment_derivation.subbasin_streamorder` of + {streamorder_}. But you should inspect `subbasins` and probably + check your DEM.""") gdf_bas = vectorize(subbasins.astype(np.int32), 0, From e4394677c3348d81361092ead8e24a6f788c79b7 Mon Sep 17 00:00:00 2001 From: Dobson Date: Fri, 21 Jun 2024 10:48:18 +0100 Subject: [PATCH 29/38] Delete quickstart.py --- docs/notebooks/quickstart.py | 107 ----------------------------------- 1 file changed, 107 deletions(-) delete mode 100644 docs/notebooks/quickstart.py diff --git a/docs/notebooks/quickstart.py b/docs/notebooks/quickstart.py deleted file mode 100644 index e86e7124..00000000 --- a/docs/notebooks/quickstart.py +++ /dev/null @@ -1,107 +0,0 @@ -# %% [markdown] -# # Quickstart -# Note - this script can also be opened in interactive Python if you wanted to -# play around. On the GitHub it is in [docs/notebooks]() -# -# %% -# Import modules -from __future__ import annotations - -import os -from pathlib import Path -from pprint import pprint as print - -import pandas as pd - -from swmmanywhere import swmmanywhere - -# Make a base directory -base_dir = Path.cwd() / 'swmmanywhere_models' -print(base_dir) -base_dir.mkdir(exist_ok=True, parents=True) - -# %% [markdown] -## Define configuration file -# The standard use of SWMManywhere is achieved via a `configuration` file. This -# file defines a variety of parameters to use during the creation and running -# of the synthetic SWMM model. -# %% -# Load the default config file -config = swmmanywhere.load_config(validation = False) -print(config) - -# %% [markdown] -# The configuration file is a dictionary that contains a variety of parameters -# that are used to define the synthetic SWMM model and run. We won't go through -# all of them here, but we will explore some key ones in this demo. - -# %% -# Update the information in it to match our current demo - -# A real base directory is needed to store data -config['base_dir'] = base_dir - -# A project name will be a folder in the base directory for this demo -config['project'] = 'my_first_swmm' - -# The bounding box is a list of four values: [minx, miny, maxx, maxy], we will -# pick one in Andorra because the area is small and we can download the building -# data for it very quickly (larger countries will take longer) -config['bbox'] = [1.52740,42.50524,1.54273,42.51259] - -# A precipitation downloader will be added in the future so we will just use -# the design storm -config['address_overrides'] = {'precipitation' : - Path(swmmanywhere.__file__).parent / 'defs' / 'storm.dat'} - -# If you do not know the outline of your urban drainage network (as in this case) -# you will have to run the `clip_to_catchments` graph function. T -config['parameter_overrides'] = {'subcatchment_derivation' : - {'subbasin_streamorder' : 5} - } - -# We do not have a real SWMM model for this so we will delete that entry -del config['real'] - -# %% [markdown] -## Run SWMManywhere -# The `swmmanywhere` function is the main function that generates a synthetic -# SWMM model and runs it. -# -# We will turn on the verbose mode so we can see what is happening. - -# %% -# Run SWMManywhere -os.environ["SWMMANYWHERE_VERBOSE"] = "true" -inp, _ = swmmanywhere.swmmanywhere(config) -print(f'Created SWMM model at: {inp}') - -# %% [markdown] -# OK so we have run the model and we have an `inp` file. This is the SWMM model -# that we have created and can be loaded by the SWMM software. Here is a -# screenshot of this generated run. -# -# ![SWMM Model](../../images/andorra_swmm_screenshot.png) -# -# The `swmmanywhere` function has also run a simulation, the results can be -# found in the same folder as the input file, by default they are saved in a -# `parquet` format, let's load them and plot something. - -# %% -results = pd.read_parquet(inp.parent / 'results.parquet') -results.sample(10) -# %% [markdown] -# The results are a DataFrame that contains the results of the simulation, the -# data is in narrow format, so each row is a simulation of a `variable` at a -# particular `date` for a particular `id` (i.e., manhole or pipe). -# %% -gb = results.groupby(['variable','id']) -gb.get_group(('flow', results.iloc[-1].id)).plot(x='date', - y='value', - title='Flow in a pipe', - xlabel='Date', - ylabel='Flow (l/s)' - ) -# %% [markdown] -# Hooray! We have run a synthetic SWMM model and plotted some results. This is -# the end of the quickstart guide. \ No newline at end of file From 42fdd64b16e0092e17d1142b027f676d491e9c88 Mon Sep 17 00:00:00 2001 From: Dobson Date: Fri, 21 Jun 2024 11:05:08 +0100 Subject: [PATCH 30/38] Update metric_utilities.py --- swmmanywhere/metric_utilities.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swmmanywhere/metric_utilities.py b/swmmanywhere/metric_utilities.py index 285f9661..5d30b12f 100644 --- a/swmmanywhere/metric_utilities.py +++ b/swmmanywhere/metric_utilities.py @@ -272,7 +272,7 @@ def nse(y: np.ndarray, def kge(y: np.ndarray,yhat: np.ndarray) -> float: r"""Calculate the Kling-Gupta Efficiency (KGE) between simulated and observed data. - Calculate KGE: + Calculate KGE with the 2009 formulation: $$ KGE = 1 - \sqrt{ (r - 1)^2 + From f1b0af115488a637b4b2d2a4c42075a137b6dc95 Mon Sep 17 00:00:00 2001 From: Dobson Date: Fri, 21 Jun 2024 11:06:30 +0100 Subject: [PATCH 31/38] Update pyproject.toml --- pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ac4e0cde..2d654185 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -98,7 +98,6 @@ select = ["D", "E", "F", "I"] # pydocstyle, pycodestyle, Pyflakes, isort [tool.ruff.per-file-ignores] "tests/*" = ["D100", "D104"] -"docs/notebooks/quickstart.py" = ["D100"] [tool.ruff.pydocstyle] convention = "google" From 844442ab7d10a05deb1b2d8598d8d737a2c3091f Mon Sep 17 00:00:00 2001 From: Dobson Date: Fri, 21 Jun 2024 17:07:31 +0100 Subject: [PATCH 32/38] switch backup subbasin method --- swmmanywhere/geospatial_utilities.py | 29 +++++++++++++++++----------- swmmanywhere/graph_utilities.py | 4 +++- tests/test_graph_utilities.py | 16 +++++++++++++-- 3 files changed, 35 insertions(+), 14 deletions(-) diff --git a/swmmanywhere/geospatial_utilities.py b/swmmanywhere/geospatial_utilities.py index 2350e6e5..003d509e 100644 --- a/swmmanywhere/geospatial_utilities.py +++ b/swmmanywhere/geospatial_utilities.py @@ -644,12 +644,16 @@ def delineate_catchment_pyflwdir(grid: pysheds.sgrid.sGrid, return gdf_bas def derive_subbasins_streamorder(fid: Path, - streamorder: int): + streamorder: int, + x: list[float] = [], + y: list[float] = []) -> gpd.GeoDataFrame: """Derive subbasins of a given stream order. Args: fid (Path): Filepath to the DEM. streamorder (int): The stream order to delineate subbasins for. + x (list): X coordinates. + y (list): Y coordinates. Returns: gpd.GeoDataFrame: A GeoDataFrame containing polygons. @@ -666,16 +670,19 @@ def derive_subbasins_streamorder(fid: Path, # Identify stream order subbasins, _ = flw.subbasins_streamorder(min_sto=streamorder) - streamorder_ = streamorder - while np.unique(subbasins.reshape(-1)).shape[0] == 1: - subbasins, _ = flw.subbasins_streamorder(min_sto=streamorder_) - streamorder_ -= 1 - - if streamorder_ != streamorder: - logger.warning(f"""No subbasins found in `derive_subbasins_streamorder`. - Using a lower `subcatchment_derivation.subbasin_streamorder` of - {streamorder_}. But you should inspect `subbasins` and probably - check your DEM.""") + + if np.unique(subbasins).shape[0] == 1: + + xy = [(x_,y_) for x_, y_ in zip(x,y) + if (x_ > grid.bbox[0]) and (x_ < grid.bbox[2]) + and (y_ > grid.bbox[1]) and (y_ < grid.bbox[3])] + + idxs, _ = flw.snap(xy=list(zip(*xy))) + subbasins = flw.basins(idxs=np.unique(idxs)) + logger.warning("""No subbasins found in `derive_subbasins_streamorder`. + Instead subbasins have been selected based on the most downstream + points. But you should inspect `subbasins` and probably check your + DEM.""") gdf_bas = vectorize(subbasins.astype(np.int32), 0, diff --git a/swmmanywhere/graph_utilities.py b/swmmanywhere/graph_utilities.py index 7ae835d5..1c67ab93 100644 --- a/swmmanywhere/graph_utilities.py +++ b/swmmanywhere/graph_utilities.py @@ -641,7 +641,9 @@ def __call__(self, # Derive subbasins subbasins = go.derive_subbasins_streamorder(addresses.elevation, - subcatchment_derivation.subbasin_streamorder) + subcatchment_derivation.subbasin_streamorder, + x = list(nx.get_node_attributes(G, 'x').values()), + y = list(nx.get_node_attributes(G, 'y').values())) if verbose(): subbasins.to_file( diff --git a/tests/test_graph_utilities.py b/tests/test_graph_utilities.py index d4e58c10..fe54f8df 100644 --- a/tests/test_graph_utilities.py +++ b/tests/test_graph_utilities.py @@ -23,6 +23,7 @@ save_graph, ) from swmmanywhere.graph_utilities import graphfcns as gu +from swmmanywhere.logging import logger @pytest.fixture @@ -619,7 +620,12 @@ def test_clip_to_catchments(street_network): assert len(G_.edges) == 28 # Check streamorder adjustment - with pytest.raises(ValueError): + with tempfile.NamedTemporaryFile(suffix='.log', + mode = 'w+b', + delete=False) as temp_file: + fid = Path(temp_file.name) + os.environ['SWMMANYWHERE_VERBOSE'] = 'true' + logger.add(fid) subcatchment_derivation = parameters.SubcatchmentDerivation( subbasin_streamorder = 5, subbasin_membership = 0.9 @@ -627,7 +633,13 @@ def test_clip_to_catchments(street_network): G_ = gu.clip_to_catchments(G, addresses=addresses, subcatchment_derivation=subcatchment_derivation) - + ftext = str(temp_file.read()) + assert """No subbasins found""" in ftext + assert """WARNING""" in ftext + logger.remove() + os.environ['SWMMANYWHERE_VERBOSE'] = 'false' + assert (addresses.nodes.parent / 'subbasins.geojson').exists() + def test_filter_streets(): """Test the _filter_streets function.""" # Create a sample graph From 678c736a496bcf1773130af2ebd545cf5bda0f84 Mon Sep 17 00:00:00 2001 From: Dobson Date: Fri, 21 Jun 2024 17:09:28 +0100 Subject: [PATCH 33/38] Update docstring --- swmmanywhere/geospatial_utilities.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/swmmanywhere/geospatial_utilities.py b/swmmanywhere/geospatial_utilities.py index 003d509e..cbdc3d6c 100644 --- a/swmmanywhere/geospatial_utilities.py +++ b/swmmanywhere/geospatial_utilities.py @@ -649,6 +649,9 @@ def derive_subbasins_streamorder(fid: Path, y: list[float] = []) -> gpd.GeoDataFrame: """Derive subbasins of a given stream order. + By backup it will use the pyflwdir snap function to find the most downstream + points in each subbasin. + Args: fid (Path): Filepath to the DEM. streamorder (int): The stream order to delineate subbasins for. From e95dc36db6586371f5fa2b3f64ef650cef5ed7b2 Mon Sep 17 00:00:00 2001 From: Dobson Date: Fri, 21 Jun 2024 17:45:19 +0100 Subject: [PATCH 34/38] make snap the default subbasin method --- swmmanywhere/geospatial_utilities.py | 39 +++++++++++++++------------- swmmanywhere/parameters.py | 2 +- tests/test_graph_utilities.py | 15 +++++++++++ 3 files changed, 37 insertions(+), 19 deletions(-) diff --git a/swmmanywhere/geospatial_utilities.py b/swmmanywhere/geospatial_utilities.py index cbdc3d6c..50a35677 100644 --- a/swmmanywhere/geospatial_utilities.py +++ b/swmmanywhere/geospatial_utilities.py @@ -644,13 +644,14 @@ def delineate_catchment_pyflwdir(grid: pysheds.sgrid.sGrid, return gdf_bas def derive_subbasins_streamorder(fid: Path, - streamorder: int, + streamorder: int | None = None, x: list[float] = [], y: list[float] = []) -> gpd.GeoDataFrame: - """Derive subbasins of a given stream order. + """Derive subbasins. - By backup it will use the pyflwdir snap function to find the most downstream - points in each subbasin. + Use the pyflwdir snap function to find the most downstream points in each + subbasin. If streamorder is provided it will use that instead, although + defaulting to snap if there are no cells of the correct streamorder. Args: fid (Path): Filepath to the DEM. @@ -670,22 +671,24 @@ def derive_subbasins_streamorder(fid: Path, check_ftype = False, transform = grid.affine, ) + xy = [(x_,y_) for x_, y_ in zip(x,y) + if (x_ > grid.bbox[0]) and (x_ < grid.bbox[2]) + and (y_ > grid.bbox[1]) and (y_ < grid.bbox[3])] + + idxs, _ = flw.snap(xy=list(zip(*xy))) + subbasins = flw.basins(idxs=np.unique(idxs)) - # Identify stream order - subbasins, _ = flw.subbasins_streamorder(min_sto=streamorder) + if streamorder is not None: + # Identify stream order + subbasins_, _ = flw.subbasins_streamorder(min_sto=streamorder) - if np.unique(subbasins).shape[0] == 1: - - xy = [(x_,y_) for x_, y_ in zip(x,y) - if (x_ > grid.bbox[0]) and (x_ < grid.bbox[2]) - and (y_ > grid.bbox[1]) and (y_ < grid.bbox[3])] - - idxs, _ = flw.snap(xy=list(zip(*xy))) - subbasins = flw.basins(idxs=np.unique(idxs)) - logger.warning("""No subbasins found in `derive_subbasins_streamorder`. - Instead subbasins have been selected based on the most downstream - points. But you should inspect `subbasins` and probably check your - DEM.""") + if np.unique(subbasins_).shape[0] == 1: + logger.warning("""No subbasins found in `derive_subbasins_streamorder`. + Instead subbasins have been selected based on the most downstream + points. But you should inspect `subbasins` and probably check your + DEM.""") + else: + subbasins = subbasins_ gdf_bas = vectorize(subbasins.astype(np.int32), 0, diff --git a/swmmanywhere/parameters.py b/swmmanywhere/parameters.py index 143b136d..965f228a 100644 --- a/swmmanywhere/parameters.py +++ b/swmmanywhere/parameters.py @@ -35,7 +35,7 @@ def get_full_parameters_flat(): class SubcatchmentDerivation(BaseModel): """Parameters for subcatchment derivation.""" - subbasin_streamorder: int = Field(default = 7, + subbasin_streamorder: int = Field(default = None, ge = 1, le = 20, unit = "-", diff --git a/tests/test_graph_utilities.py b/tests/test_graph_utilities.py index fe54f8df..021124a6 100644 --- a/tests/test_graph_utilities.py +++ b/tests/test_graph_utilities.py @@ -575,6 +575,21 @@ def test_clip_to_catchments(street_network): addresses.nodes = addresses.base_dir / 'nodes.geojson' addresses.elevation = Path(__file__).parent / 'test_data' / 'elevation.tif' + # Test default clipping + subcatchment_derivation = parameters.SubcatchmentDerivation() + G_ = gu.clip_to_catchments(G, + addresses=addresses, + subcatchment_derivation=subcatchment_derivation) + assert len(G_.edges) == 9 + + # Test default clipping streamorder + subcatchment_derivation = parameters.SubcatchmentDerivation() + subcatchment_derivation.subbasin_streamorder = 4 + G_ = gu.clip_to_catchments(G, + addresses=addresses, + subcatchment_derivation=subcatchment_derivation) + assert len(G_.edges) == 4 + # Test clipping subcatchment_derivation = parameters.SubcatchmentDerivation( subbasin_streamorder = 3, From 775ff5b8ee488f15f27bd95aa588ab6526be1c2c Mon Sep 17 00:00:00 2001 From: Dobson Date: Mon, 24 Jun 2024 09:28:27 +0100 Subject: [PATCH 35/38] fix logging doctest error --- pyproject.toml | 3 +++ swmmanywhere/logging.py | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 2d654185..ae8d88a2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -93,6 +93,9 @@ disallow_untyped_defs = false [tool.pytest.ini_options] addopts = "-v -p no:warnings --cov=swmmanywhere --cov-report=html --doctest-modules --ignore=swmmanywhere/__main__.py" +[tool.doctest] +skip_modules = ["swmmanywhere.logging"] + [tool.ruff] select = ["D", "E", "F", "I"] # pydocstyle, pycodestyle, Pyflakes, isort diff --git a/swmmanywhere/logging.py b/swmmanywhere/logging.py index ce7fa655..b2ab217b 100644 --- a/swmmanywhere/logging.py +++ b/swmmanywhere/logging.py @@ -6,10 +6,10 @@ >>> os.environ["SWMMANYWHERE_VERBOSE"] = "true" >>> # logging is now enabled in any swmmanywhere module >>> from swmmanywhere.logging import logger # You can now log yourself ->>> logger.info("This is an info message.") # Write to stdout # doctest: +SKIP -This is an info message. >>> logger.add("file.log") # Add a log file ->>> os.environ["SWMMANYWHERE_VERBOSE"] = "false" # Disable logging # doctest: +SKIP +>>> logger.info("This is an info message.") # Write to stdout and file.log +This is an info message. +>>> os.environ["SWMMANYWHERE_VERBOSE"] = "false" # Disable logging ``` """ from __future__ import annotations From 4c6d654e3179c487309f45ab71e40da36af1a33b Mon Sep 17 00:00:00 2001 From: Dobson Date: Mon, 24 Jun 2024 09:34:37 +0100 Subject: [PATCH 36/38] Update pyproject.toml fix again --- pyproject.toml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index ae8d88a2..b8328ec8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -91,10 +91,7 @@ module = "tests.*" disallow_untyped_defs = false [tool.pytest.ini_options] -addopts = "-v -p no:warnings --cov=swmmanywhere --cov-report=html --doctest-modules --ignore=swmmanywhere/__main__.py" - -[tool.doctest] -skip_modules = ["swmmanywhere.logging"] +addopts = "-v -p no:warnings --cov=swmmanywhere --cov-report=html --doctest-modules --ignore=swmmanywhere/logging.py" [tool.ruff] select = ["D", "E", "F", "I"] # pydocstyle, pycodestyle, Pyflakes, isort From c0ecd32523c353e6864ca09c6dfe61558bdf133c Mon Sep 17 00:00:00 2001 From: Dobson Date: Mon, 24 Jun 2024 09:39:48 +0100 Subject: [PATCH 37/38] Update index.md remove coverage link for now --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 96406434..d57e1942 100644 --- a/docs/index.md +++ b/docs/index.md @@ -17,4 +17,4 @@ derive a synthetic urban drainage network anywhere in the world. - [Parameters](reference-parameters.md) - [Post processing](reference-post-processing.md) - [Preprocessing](reference-preprocessing.md) -- [Coverage report](coverage.md) + \ No newline at end of file From ed3d8b70f09591a9ca4ad7a52e347ae8a31ed223 Mon Sep 17 00:00:00 2001 From: Dobson Date: Mon, 24 Jun 2024 09:44:24 +0100 Subject: [PATCH 38/38] Update quickstart.md try new relative link for images --- docs/quickstart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/quickstart.md b/docs/quickstart.md index 8e7b363c..326f178d 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -40,7 +40,7 @@ which will create a SWMM input file (`.inp`) at the file location: If you prefer GUIs then the easiest thing now is to download the [SWMM software](https://www.epa.gov/water-research/storm-water-management-model-swmm) and load your model in there. The example above looks as follows: -![SWMM Model](../../images/andorra_swmm_screenshot.png) +![SWMM Model](images/andorra_swmm_screenshot.png) From here you can run or edit your model.