HydroMT: Automated and reproducible model building and analysis#
What is HydroMT?#
HydroMT (Hydro Model Tools) is an open-source Python package that facilitates the process of building and analyzing spatial geoscientific models with a focus on water system models. It does so by automating the workflow to go from raw data to a complete model instance which is ready to run and to analyse model results once the simulation has finished. HydroMT builds on the latest packages in the scientific and geospatial python eco-system including xarray, rasterio, rioxarray, geopandas, scipy and pyflwdir.
Why HydroMT?#
Setting up spatial geoscientific models typically requires many (manual) steps to process input data and might therefore be time consuming and hard to reproduce. Especially improving models based on global geospatial datasets, which are rapidly becoming available at increasingly high resolutions, might be challenging. Furthermore, analyzing model schematization and results from different models, which often use model-specific peculiar data formats, can be time consuming. This package aims to make the model building process fast, modular and reproducible by configuring the model building process from a single yaml configuration file and model- and data-agnostic through a common model and data interface.
How to use HydroMT?#
HydroMT can be used as a command line application (CLI) which provides commands to build, update and clip models with a single line, or from Python to exploit its rich interface. You can learn more about how to use HydroMT in its online documentation. For a smooth installing experience, we recommend installing HydroMT and its dependencies from conda-forge in a clean environment, see installation guide.
HydroMT model plugins#
HydroMT is commonly used in combination with a model plugin which provides a HydroMT implementation for specific model software. Using the plugins allows to prepare a ready-to-run set of input files from raw geoscientific datasets and analyse model results in a fast and reproducible way. Known model plugins include:
hydromt_wflow: A framework for distributed rainfall-runoff (wflow_sbm) and sediment transport (wflow_sediment) modelling.
hydromt_delwaq: A framework for water quality (D-Water Quality) and emissions (D-Emissions) modelling.
hydromt_sfincs: A fast 2D hydrodynamic flood model (SFINCS).
hydromt_fiat: A flood impact model (FIAT).
hydromt_delft3dfm: A flexible mesh hydrodynamic suite for 1D2D and 2D3D modelling (Delft3D FM).
How to cite?#
For publications, please cite our JOSS paper
- ::
Eilander et al., (2023). HydroMT: Automated and reproducible model building and analysis. Journal of Open Source Software, 8(83), 4897, https://doi.org/10.21105/joss.04897
To cite a specific software version please use the DOI provided in the Zenodo badge that points to the latest release.
How to contribute?#
If you find any issues in the code or documentation feel free to leave an issue on the github issue tracker. You can find information about how to contribute to the HydroMT project at our contributing page.
HydroMT seeks active contribution from the (hydro) geoscientific community. So far, it has been developed and tested with a range of Deltares models, but we believe it is applicable to a much wider set of geoscientific models and are happy to discuss how it can be implemented for your model.
Attribution#
HydroMT relies on these excellent packages:
affine
aiohappyeyeballs
aiohttp
aiosignal
annotated-types
asciitree
async-timeout
attrs
bottleneck
branca
certifi
cftime
charset-normalizer
click
click-plugins
cligj
cloudpickle
contourpy
cycler
dask
fasteners
folium
fonttools
frozenlist
fsspec
geoalchemy2
geographiclib
geopandas
geopy
greenlet
idna
importlib-metadata
importlib-resources
jinja2
joblib
kiwisolver
llvmlite
locket
mapclassify
markupsafe
matplotlib
mercantile
multidict
netcdf4
networkx
numba
numba-celltree
numcodecs
numpy
packaging
pandas
partd
pillow
platformdirs
pooch
propcache
psycopg-binary
pyarrow
pydantic
pydantic-core
pydantic-settings
pyflwdir
pyogrio
pyparsing
pyproj
pystac
python-dateutil
python-dotenv
pytz
pyyaml
rasterio
requests
rioxarray
scikit-learn
scipy
shapely
six
sqlalchemy
threadpoolctl
tomlkit
toolz
typing-extensions
typing-inspection
tzdata
universal-pathlib
urllib3
xarray
xmltodict
xugrid
xyzservices
yarl
zarr
zipp