├── tests ├── __init__.py ├── components │ ├── __init__.py │ └── test_tables_component.py ├── workflows │ ├── __init__.py │ ├── test_landuse.py │ └── test_reservoirs.py ├── data │ ├── floodplain_layers.nc │ ├── merit_utm │ │ ├── elevtn.tif │ │ ├── flwdir.tif │ │ ├── uparea.tif │ │ └── merit_utm.yml │ ├── demand │ │ ├── lisflood_gwfrac.tif │ │ ├── lisflood_ncfrac.tif │ │ ├── lisflood_gwbodies.tif │ │ ├── lisflood_waterregions.tif │ │ └── data_catalog.yml │ ├── linux64 │ │ └── floodplain_layers.nc │ ├── test_stations.csv │ ├── wflow_v0x │ │ └── sbm_with_lake_files │ │ │ └── staticmaps │ │ │ └── staticmaps_v0x.nc │ ├── wflow_piave_clip.yml │ ├── glacier │ │ ├── glacier_utm.yml │ │ ├── glaciers_4326.geojson │ │ └── glaciers_3857.geojson │ ├── test_stations.geojson │ ├── wflow_sediment_piave_build_subbasin.yml │ ├── wflow_piave_build_subbasin.yml │ └── system_test_build_sediment_from_sbm.yml ├── test_fetch_data.py ├── test_benchmarks.py └── test_model_methods_sediment.py ├── docs ├── _templates │ ├── .gitignore │ └── component-class.rst ├── _static │ ├── wflow_logo.png │ ├── setup_lulcmaps.png │ ├── theme-deltares.css │ ├── deltares-blue.svg │ ├── deltares-white.svg │ └── switcher.json ├── api │ ├── advanced │ │ ├── workflows │ │ │ ├── gauges.rst │ │ │ ├── states.rst │ │ │ ├── connect.rst │ │ │ ├── forcing.rst │ │ │ ├── glaciers.rst │ │ │ ├── rootzoneclim.rst │ │ │ ├── basemaps.rst │ │ │ ├── soilparams.rst │ │ │ ├── river.rst │ │ │ ├── soilgrids.rst │ │ │ ├── demand.rst │ │ │ ├── landuse.rst │ │ │ ├── reservoirs.rst │ │ │ └── index.rst │ │ ├── utilities.rst │ │ ├── index.rst │ │ ├── model-components.rst │ │ └── base-model.rst │ └── index.rst ├── dev_guide │ ├── intro.rst │ ├── contributors.rst │ ├── roadmap.rst │ ├── dev_install.rst │ └── release_workflow.rst ├── Makefile ├── user_guide │ ├── 1_getting_started_hydromt │ │ ├── data_catalog.rst │ │ └── index.rst │ ├── 2_sbm_model │ │ ├── index.rst │ │ ├── 4_clip.rst │ │ └── 3_update.rst │ ├── 3_sediment_model │ │ ├── index.rst │ │ ├── 4_clip.rst │ │ └── 3_update.rst │ ├── 5_setup_methods │ │ ├── setup_x.rst │ │ └── index.rst │ ├── 6_migration_guide │ │ ├── migration_wflow.rst │ │ └── index.rst │ ├── 4_pre_and_post_processing │ │ └── index.rst │ └── index.rst ├── make.bat └── getting_started │ ├── intro.rst │ └── example_index.rst ├── .act_event.json ├── hydromt_wflow ├── version.py ├── data │ ├── wflow_sbm │ │ ├── river_manning_mapping.csv │ │ └── wflow_sbm.toml │ ├── default_config_headers.toml │ ├── registry.json │ ├── lulc │ │ ├── v1.0 │ │ │ ├── paddy_mapping.csv │ │ │ ├── esa_worldcover_mapping.csv │ │ │ ├── glcnmo_mapping.csv │ │ │ └── vito_mapping.csv │ │ └── v0.8 │ │ │ ├── paddy_mapping.csv │ │ │ ├── esa_worldcover_mapping.csv │ │ │ ├── glcnmo_mapping.csv │ │ │ └── vito_mapping.csv │ ├── rivwth │ │ ├── koppen_geiger.csv │ │ └── regr_chelsa.csv │ ├── wflow_sediment │ │ ├── riverbedsed_mapping.csv │ │ └── wflow_sediment.toml │ └── fetch.py ├── __init__.py ├── workflows │ └── __init__.py └── components │ ├── __init__.py │ └── tables.py ├── examples ├── data │ ├── demand │ │ ├── glcnmo.tif │ │ ├── pcr_globwb.nc │ │ ├── irrigated_area.tif │ │ ├── lisflood_gwfrac.tif │ │ ├── lisflood_ncfrac.tif │ │ ├── lisflood_gwbodies.tif │ │ ├── lisflood_waterregions.tif │ │ ├── V3_crop_factor_rainfed_rice-excluded.nc │ │ ├── V3_crop_factor_irrigated_rice-excluded.nc │ │ └── mirca_crop_info.csv │ ├── wflow_upgrade │ │ ├── sbm │ │ │ └── staticmaps_v0x.nc │ │ └── sediment │ │ │ └── staticmaps_v0x.nc │ └── wflow_sediment.toml ├── wflow_piave_clip │ ├── inmaps.nc │ ├── staticmaps.nc │ ├── instate │ │ └── instates.nc │ └── staticgeoms │ │ ├── outlets.geojson │ │ ├── region.geojson │ │ ├── gauges_grdc.geojson │ │ ├── basins.geojson │ │ └── rivers.geojson ├── wflow_piave_subbasin │ ├── inmaps.nc │ ├── staticmaps.nc │ ├── instate │ │ └── instates.nc │ ├── run_results │ │ ├── output.nc │ │ ├── output_scalar.nc │ │ ├── outstate │ │ │ ├── outstates.nc │ │ │ └── outstates2.nc │ │ ├── output2.csv │ │ └── output.csv │ ├── validation │ │ └── reservoir_accuracy.csv │ └── staticgeoms │ │ ├── outlets.geojson │ │ ├── region.geojson │ │ ├── gauges_grdc.geojson │ │ ├── meta_reservoirs_no_control.geojson │ │ └── reservoirs.geojson ├── wflow_update_gauges.yml ├── linux64 │ ├── wflow_piave_clip │ │ ├── inmaps.nc │ │ ├── staticmaps.nc │ │ ├── instate │ │ │ └── instates.nc │ │ └── staticgeoms │ │ │ ├── outlets.geojson │ │ │ ├── region.geojson │ │ │ ├── gauges_grdc.geojson │ │ │ ├── basins.geojson │ │ │ └── rivers.geojson │ ├── wflow_piave_subbasin │ │ ├── inmaps.nc │ │ ├── staticmaps.nc │ │ ├── instate │ │ │ └── instates.nc │ │ ├── run_results │ │ │ ├── output.nc │ │ │ ├── output_scalar.nc │ │ │ ├── outstate │ │ │ │ ├── outstates.nc │ │ │ │ └── outstates2.nc │ │ │ ├── output2.csv │ │ │ └── output.csv │ │ ├── validation │ │ │ └── reservoir_accuracy.csv │ │ └── staticgeoms │ │ │ ├── outlets.geojson │ │ │ ├── region.geojson │ │ │ ├── gauges_grdc.geojson │ │ │ ├── meta_reservoirs_no_control.geojson │ │ │ └── reservoirs.geojson │ └── wflow_sediment_piave_subbasin │ │ ├── staticmaps.nc │ │ └── staticgeoms │ │ ├── outlets.geojson │ │ ├── region.geojson │ │ ├── reservoirs.geojson │ │ ├── gauges_grdc.geojson │ │ └── meta_natural_reservoirs.geojson ├── test_stations.csv ├── wflow_sediment_piave_subbasin │ ├── staticmaps.nc │ └── staticgeoms │ │ ├── outlets.geojson │ │ ├── region.geojson │ │ ├── reservoirs.geojson │ │ ├── gauges_grdc.geojson │ │ └── meta_natural_reservoirs.geojson ├── wflow_update_gauges_without_snapping.yml ├── wflow_update_v1_sediment.yml ├── wflow_update_v1_sbm.yml ├── wflow_update_landuse.yml ├── gauges_observed_flow.csv ├── wflow_clip.yml ├── wflow_update_water_demand.yml ├── wflow_update_forcing.yml ├── legends │ ├── GLOBCOVER_2009_QGIS.txt │ └── CLC2018_CLC2018_V2018_20_QGIS.txt └── wflow_extend_sediment.yml ├── .actrc ├── .gitattributes ├── MANIFEST.in ├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── feature_request.yaml │ ├── documentation_improvement.yaml │ └── bug_report.yaml ├── workflows │ ├── linting.yml │ ├── purge_cache.yml │ ├── compare-benchmark.yml │ ├── pre_commit_auto_update.yml │ ├── record-benchmark.yml │ ├── system_test.yml │ ├── sonar.yml │ ├── lock.yml │ ├── test.yml │ ├── publish.yml │ └── docs.yml ├── pull_request_template.md └── dependabot.yml ├── sonar-project.properties ├── .vscode ├── launch.json └── settings.json ├── .binder └── Dockerfile ├── .pre-commit-config.yaml ├── .zenodo.json └── .gitignore /tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/_templates/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/components/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tests/workflows/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.act_event.json: -------------------------------------------------------------------------------- 1 | { 2 | "act": true 3 | } 4 | -------------------------------------------------------------------------------- /hydromt_wflow/version.py: -------------------------------------------------------------------------------- 1 | """Versioning.""" 2 | 3 | __version__ = "1.0.0.dev0" 4 | -------------------------------------------------------------------------------- /docs/_static/wflow_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/docs/_static/wflow_logo.png -------------------------------------------------------------------------------- /docs/_static/setup_lulcmaps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/docs/_static/setup_lulcmaps.png -------------------------------------------------------------------------------- /examples/data/demand/glcnmo.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/data/demand/glcnmo.tif -------------------------------------------------------------------------------- /tests/data/floodplain_layers.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/tests/data/floodplain_layers.nc -------------------------------------------------------------------------------- /tests/data/merit_utm/elevtn.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/tests/data/merit_utm/elevtn.tif -------------------------------------------------------------------------------- /tests/data/merit_utm/flwdir.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/tests/data/merit_utm/flwdir.tif -------------------------------------------------------------------------------- /tests/data/merit_utm/uparea.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/tests/data/merit_utm/uparea.tif -------------------------------------------------------------------------------- /examples/data/demand/pcr_globwb.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/data/demand/pcr_globwb.nc -------------------------------------------------------------------------------- /examples/wflow_piave_clip/inmaps.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/wflow_piave_clip/inmaps.nc -------------------------------------------------------------------------------- /tests/data/demand/lisflood_gwfrac.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/tests/data/demand/lisflood_gwfrac.tif -------------------------------------------------------------------------------- /tests/data/demand/lisflood_ncfrac.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/tests/data/demand/lisflood_ncfrac.tif -------------------------------------------------------------------------------- /examples/data/demand/irrigated_area.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/data/demand/irrigated_area.tif -------------------------------------------------------------------------------- /examples/data/demand/lisflood_gwfrac.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/data/demand/lisflood_gwfrac.tif -------------------------------------------------------------------------------- /examples/data/demand/lisflood_ncfrac.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/data/demand/lisflood_ncfrac.tif -------------------------------------------------------------------------------- /examples/wflow_piave_clip/staticmaps.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/wflow_piave_clip/staticmaps.nc -------------------------------------------------------------------------------- /examples/wflow_piave_subbasin/inmaps.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/wflow_piave_subbasin/inmaps.nc -------------------------------------------------------------------------------- /examples/wflow_update_gauges.yml: -------------------------------------------------------------------------------- 1 | steps: 2 | - setup_gauges: 3 | gauges_fn : test_stations.csv 4 | basename: test-flow 5 | -------------------------------------------------------------------------------- /tests/data/demand/lisflood_gwbodies.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/tests/data/demand/lisflood_gwbodies.tif -------------------------------------------------------------------------------- /tests/data/linux64/floodplain_layers.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/tests/data/linux64/floodplain_layers.nc -------------------------------------------------------------------------------- /examples/data/demand/lisflood_gwbodies.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/data/demand/lisflood_gwbodies.tif -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_clip/inmaps.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/linux64/wflow_piave_clip/inmaps.nc -------------------------------------------------------------------------------- /examples/wflow_piave_clip/instate/instates.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/wflow_piave_clip/instate/instates.nc -------------------------------------------------------------------------------- /examples/wflow_piave_subbasin/staticmaps.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/wflow_piave_subbasin/staticmaps.nc -------------------------------------------------------------------------------- /tests/data/demand/lisflood_waterregions.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/tests/data/demand/lisflood_waterregions.tif -------------------------------------------------------------------------------- /examples/data/demand/lisflood_waterregions.tif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/data/demand/lisflood_waterregions.tif -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_clip/staticmaps.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/linux64/wflow_piave_clip/staticmaps.nc -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_subbasin/inmaps.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/linux64/wflow_piave_subbasin/inmaps.nc -------------------------------------------------------------------------------- /examples/data/wflow_upgrade/sbm/staticmaps_v0x.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/data/wflow_upgrade/sbm/staticmaps_v0x.nc -------------------------------------------------------------------------------- /examples/test_stations.csv: -------------------------------------------------------------------------------- 1 | ID,Name,x,y,uparea 2 | 1001,Gauge1,11.9594,45.8925,3642 3 | 1002,Gauge2,12.3395,46.1492,2 4 | 1003,Gauge3,12.0785,46.1122,837 5 | -------------------------------------------------------------------------------- /examples/wflow_piave_subbasin/instate/instates.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/wflow_piave_subbasin/instate/instates.nc -------------------------------------------------------------------------------- /tests/data/test_stations.csv: -------------------------------------------------------------------------------- 1 | ID,Name,x,y,uparea 2 | 1001,Gauge1,11.9594,45.8925,3642 3 | 1002,Gauge2,12.3395,46.1492,2 4 | 1003,Gauge3,12.0785,46.1122, 5 | -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_subbasin/staticmaps.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/linux64/wflow_piave_subbasin/staticmaps.nc -------------------------------------------------------------------------------- /examples/wflow_piave_subbasin/run_results/output.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/wflow_piave_subbasin/run_results/output.nc -------------------------------------------------------------------------------- /examples/wflow_sediment_piave_subbasin/staticmaps.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/wflow_sediment_piave_subbasin/staticmaps.nc -------------------------------------------------------------------------------- /examples/data/wflow_upgrade/sediment/staticmaps_v0x.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/data/wflow_upgrade/sediment/staticmaps_v0x.nc -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_clip/instate/instates.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/linux64/wflow_piave_clip/instate/instates.nc -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_subbasin/instate/instates.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/linux64/wflow_piave_subbasin/instate/instates.nc -------------------------------------------------------------------------------- /examples/wflow_piave_subbasin/validation/reservoir_accuracy.csv: -------------------------------------------------------------------------------- 1 | ,resid,factor,accuracy_min,accuracy_norm 2 | 0,3349.0,1.0,3.0,1.0 3 | 1,3367.0,1.318840579710145,3.0,1.0 4 | -------------------------------------------------------------------------------- /examples/data/demand/V3_crop_factor_rainfed_rice-excluded.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/data/demand/V3_crop_factor_rainfed_rice-excluded.nc -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_subbasin/run_results/output.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/linux64/wflow_piave_subbasin/run_results/output.nc -------------------------------------------------------------------------------- /examples/linux64/wflow_sediment_piave_subbasin/staticmaps.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/linux64/wflow_sediment_piave_subbasin/staticmaps.nc -------------------------------------------------------------------------------- /examples/wflow_piave_subbasin/run_results/output_scalar.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/wflow_piave_subbasin/run_results/output_scalar.nc -------------------------------------------------------------------------------- /examples/data/demand/V3_crop_factor_irrigated_rice-excluded.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/data/demand/V3_crop_factor_irrigated_rice-excluded.nc -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_subbasin/validation/reservoir_accuracy.csv: -------------------------------------------------------------------------------- 1 | ,resid,factor,accuracy_min,accuracy_norm 2 | 0,3349.0,1.0,3.0,1.0 3 | 1,3367.0,1.318840579710145,3.0,1.0 4 | -------------------------------------------------------------------------------- /examples/wflow_piave_subbasin/run_results/outstate/outstates.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/wflow_piave_subbasin/run_results/outstate/outstates.nc -------------------------------------------------------------------------------- /examples/wflow_piave_subbasin/run_results/outstate/outstates2.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/wflow_piave_subbasin/run_results/outstate/outstates2.nc -------------------------------------------------------------------------------- /.actrc: -------------------------------------------------------------------------------- 1 | -P ubuntu-latest=catthehacker/ubuntu:full-latest 2 | -P ubuntu-latest=catthehacker/ubuntu:full-20.04 3 | -P ubuntu-18.04=catthehacker/ubuntu:full-18.04 4 | 5 | -e .act_event.json 6 | -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_subbasin/run_results/output_scalar.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/linux64/wflow_piave_subbasin/run_results/output_scalar.nc -------------------------------------------------------------------------------- /tests/data/wflow_v0x/sbm_with_lake_files/staticmaps/staticmaps_v0x.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/tests/data/wflow_v0x/sbm_with_lake_files/staticmaps/staticmaps_v0x.nc -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_subbasin/run_results/outstate/outstates.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/linux64/wflow_piave_subbasin/run_results/outstate/outstates.nc -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_subbasin/run_results/outstate/outstates2.nc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Deltares/hydromt_wflow/main/examples/linux64/wflow_piave_subbasin/run_results/outstate/outstates2.nc -------------------------------------------------------------------------------- /hydromt_wflow/data/wflow_sbm/river_manning_mapping.csv: -------------------------------------------------------------------------------- 1 | strord,river_manning_n 2 | 1, 0.05 3 | 2, 0.04 4 | 3, 0.035 5 | 4, 0.03 6 | 5, 0.03 7 | 6, 0.03 8 | 7, 0.03 9 | 8, 0.03 10 | -999, -999 11 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text eol=lf 2 | *.gpkg binary 3 | *.yaml text eol=lf 4 | *.yml text eol=lf 5 | *.png binary 6 | *.nc binary 7 | 8 | # GitHub syntax highlighting 9 | pixi.lock linguist-language=YAML 10 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | # No egg-info pls, except for sources.txt 2 | prune **/*.egg-info 3 | 4 | # Include extra in the sdist 5 | recursive-include tests * 6 | 7 | # Remove unwanted stuff from sdist 8 | recursive-exclude **/__pycache__ * 9 | -------------------------------------------------------------------------------- /hydromt_wflow/data/default_config_headers.toml: -------------------------------------------------------------------------------- 1 | [time] 2 | 3 | [model] 4 | 5 | [state] 6 | 7 | [state.variables] 8 | 9 | [input] 10 | 11 | [input.forcing] 12 | 13 | [input.cyclic] 14 | 15 | [input.static] 16 | 17 | [output] 18 | -------------------------------------------------------------------------------- /tests/data/merit_utm/merit_utm.yml: -------------------------------------------------------------------------------- 1 | meta: 2 | name: merit_utm_test_data 3 | 4 | merit_hydro_1k_utm: 5 | data_type: RasterDataset 6 | uri: ./{variable}.tif 7 | driver: 8 | name: rasterio 9 | metadata: 10 | crs: 3857 11 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | blank_issues_enabled: true 4 | contact_links: 5 | - name: Ask a question 6 | url: https://github.com/Deltares/hydromt_wflow/discussions 7 | about: Ask questions and discuss with other community members 8 | -------------------------------------------------------------------------------- /docs/api/advanced/workflows/gauges.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow.workflows.gauges 2 | 3 | .. _api_workflows_gauges: 4 | 5 | ======== 6 | Gauges 7 | ======== 8 | 9 | .. autosummary:: 10 | :toctree: _generated 11 | :nosignatures: 12 | 13 | gauge_map_uparea 14 | -------------------------------------------------------------------------------- /docs/api/advanced/workflows/states.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow.workflows.states 2 | 3 | .. _api_workflows_states: 4 | 5 | 6 | ====== 7 | States 8 | ====== 9 | 10 | .. autosummary:: 11 | :toctree: _generated 12 | :nosignatures: 13 | 14 | prepare_cold_states 15 | -------------------------------------------------------------------------------- /tests/data/wflow_piave_clip.yml: -------------------------------------------------------------------------------- 1 | global: 2 | config_filename: wflow_sbm.toml 3 | steps: 4 | - clip: 5 | region: 6 | subbasin: [12.3006, 46.4324] 7 | meta_streamorder: 4 8 | inverse_clip: false 9 | clip_states: true 10 | clip_forcing: true 11 | -------------------------------------------------------------------------------- /docs/api/advanced/workflows/connect.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow.workflows.connect 2 | 3 | .. _api_workflows_connect: 4 | 5 | ======== 6 | Connect 7 | ======== 8 | 9 | .. autosummary:: 10 | :toctree: _generated 11 | :nosignatures: 12 | 13 | wflow_1dmodel_connection 14 | -------------------------------------------------------------------------------- /examples/wflow_update_gauges_without_snapping.yml: -------------------------------------------------------------------------------- 1 | steps: 2 | - setup_gauges: 3 | gauges_fn : test_stations.csv 4 | basename: test-rain 5 | snap_to_river: False 6 | gauge_toml_header: ['P-station'] 7 | gauge_toml_param : ['atmosphere_water__precipitation_volume_flux'] 8 | -------------------------------------------------------------------------------- /tests/test_fetch_data.py: -------------------------------------------------------------------------------- 1 | from hydromt import DataCatalog 2 | 3 | 4 | def test_fetch_data(build_data_catalog, build_data): 5 | assert build_data_catalog.is_file() 6 | assert build_data.is_dir() 7 | dc = DataCatalog(build_data_catalog) 8 | assert dc.get_source("chelsa").name == "chelsa" 9 | -------------------------------------------------------------------------------- /docs/api/advanced/workflows/forcing.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow.workflows.forcing 2 | 3 | .. _api_workflows_forcing: 4 | 5 | ======== 6 | Forcing 7 | ======== 8 | 9 | .. autosummary:: 10 | :toctree: _generated 11 | :nosignatures: 12 | 13 | pet 14 | spatial_interpolation 15 | -------------------------------------------------------------------------------- /docs/api/advanced/workflows/glaciers.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow.workflows.glaciers 2 | 3 | .. _api_workflows_glaciers: 4 | 5 | ======== 6 | Glaciers 7 | ======== 8 | 9 | .. autosummary:: 10 | :toctree: _generated 11 | :nosignatures: 12 | 13 | glaciermaps 14 | glacierattrs 15 | -------------------------------------------------------------------------------- /docs/api/advanced/workflows/rootzoneclim.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow.workflows.rootzoneclim 2 | 3 | .. _api_workflows_rootzoneclim: 4 | 5 | ============= 6 | Rootzoneclim 7 | ============= 8 | 9 | .. autosummary:: 10 | :toctree: _generated 11 | :nosignatures: 12 | 13 | rootzoneclim 14 | -------------------------------------------------------------------------------- /examples/wflow_update_v1_sediment.yml: -------------------------------------------------------------------------------- 1 | global: 2 | config_filename: wflow_sediment_v0x.toml 3 | 4 | steps: 5 | - upgrade_to_v1_wflow: 6 | soil_fn: soilgrids 7 | 8 | - staticmaps.write: 9 | filename: staticmaps_v1.nc 10 | 11 | - config.write: 12 | filename: wflow_sediment_v1.toml 13 | -------------------------------------------------------------------------------- /sonar-project.properties: -------------------------------------------------------------------------------- 1 | sonar.projectKey = Deltares_hydromt_wflow 2 | sonar.organization = deltares 3 | sonar.tests = tests 4 | sonar.python.version = 3.10, 3.11, 3.12, 3.13 5 | sonar.python.coverage.reportPaths = coverage.xml 6 | sonar.sources = hydromt_wflow,docs,examples 7 | sonar.coverage.exclusions = docs/**,examples/** 8 | -------------------------------------------------------------------------------- /docs/api/advanced/workflows/basemaps.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow.workflows.basemaps 2 | 3 | .. _api_workflows_basemaps: 4 | 5 | ======== 6 | Basemaps 7 | ======== 8 | 9 | .. autosummary:: 10 | :toctree: _generated 11 | :nosignatures: 12 | 13 | hydrography 14 | topography 15 | parse_region 16 | -------------------------------------------------------------------------------- /.github/workflows/linting.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Linting 3 | 4 | on: 5 | pull_request: 6 | push: 7 | branches: [main] 8 | 9 | jobs: 10 | pre-commit: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v6 14 | - uses: actions/setup-python@v6 15 | - uses: pre-commit/action@v3.0.1 16 | -------------------------------------------------------------------------------- /docs/api/advanced/workflows/soilparams.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow.workflows.soilparams 2 | 3 | .. _api_workflows_soilparams: 4 | 5 | =========== 6 | Soilparams 7 | =========== 8 | 9 | .. autosummary:: 10 | :toctree: _generated 11 | :nosignatures: 12 | 13 | ksat_horizontal_ratio 14 | ksatver_vegetation 15 | -------------------------------------------------------------------------------- /docs/api/advanced/workflows/river.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow.workflows.river 2 | 3 | .. _api_workflows_river: 4 | 5 | ======== 6 | River 7 | ======== 8 | 9 | .. autosummary:: 10 | :toctree: _generated 11 | :nosignatures: 12 | 13 | river 14 | river_bathymetry 15 | river_width 16 | river_floodplain_volume 17 | -------------------------------------------------------------------------------- /examples/wflow_piave_clip/staticgeoms/outlets.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "outlets", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "fid": 1 }, "geometry": { "type": "Point", "coordinates": [ 12.316667, 46.416667 ] } } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /examples/wflow_piave_subbasin/staticgeoms/outlets.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "outlets", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "fid": 1 }, "geometry": { "type": "Point", "coordinates": [ 12.2, 45.833333 ] } } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /examples/wflow_update_v1_sbm.yml: -------------------------------------------------------------------------------- 1 | global: 2 | config_filename: wflow_sbm_v0x.toml 3 | 4 | steps: 5 | - upgrade_to_v1_wflow: 6 | 7 | - staticmaps.write: 8 | filename: staticmaps_v1.nc 9 | 10 | - config.write: 11 | filename: wflow_sbm_v1.toml 12 | 13 | # If you have any lake_*.csv tables, write them too. 14 | - tables.write: 15 | -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_clip/staticgeoms/outlets.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "outlets", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "fid": 1 }, "geometry": { "type": "Point", "coordinates": [ 12.316667, 46.416667 ] } } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_subbasin/staticgeoms/outlets.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "outlets", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "fid": 1 }, "geometry": { "type": "Point", "coordinates": [ 12.2, 45.833333 ] } } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /examples/wflow_sediment_piave_subbasin/staticgeoms/outlets.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "outlets", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "fid": 1 }, "geometry": { "type": "Point", "coordinates": [ 12.2, 45.833333 ] } } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /examples/wflow_update_landuse.yml: -------------------------------------------------------------------------------- 1 | steps: 2 | - setup_lulcmaps: 3 | lulc_fn : corine # source for lulc maps: {globcover, vito, corine} 4 | lulc_mapping_fn: corine_mapping_default # default mapping for lulc classes 5 | output_names_suffix: corine # add a suffix to the output map names in staticmaps rather than overwriting existing landuse maps 6 | -------------------------------------------------------------------------------- /hydromt_wflow/__init__.py: -------------------------------------------------------------------------------- 1 | """HydroMT plugin for wflow models.""" 2 | 3 | from hydromt_wflow.version import __version__ 4 | from hydromt_wflow.wflow_base import WflowBaseModel 5 | from hydromt_wflow.wflow_sbm import WflowSbmModel 6 | from hydromt_wflow.wflow_sediment import WflowSedimentModel 7 | 8 | __all__ = ["WflowBaseModel", "WflowSbmModel", "WflowSedimentModel"] 9 | -------------------------------------------------------------------------------- /examples/linux64/wflow_sediment_piave_subbasin/staticgeoms/outlets.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "outlets", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "fid": 1 }, "geometry": { "type": "Point", "coordinates": [ 12.2, 45.833333 ] } } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /docs/api/advanced/workflows/soilgrids.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow.workflows.soilgrids 2 | 3 | .. _api_workflows_soilgrids: 4 | 5 | =========== 6 | Soilgrids 7 | =========== 8 | 9 | .. autosummary:: 10 | :toctree: _generated 11 | :nosignatures: 12 | 13 | soilgrids 14 | soilgrids_sediment 15 | soilgrids_brooks_corey 16 | update_soil_with_paddy 17 | -------------------------------------------------------------------------------- /docs/api/advanced/utilities.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow.utils 2 | 3 | .. _api_utils: 4 | 5 | ========= 6 | Utilities 7 | ========= 8 | 9 | Low-level helper methods for reading and preparing model data. 10 | 11 | .. autosummary:: 12 | :toctree: _generated 13 | :nosignatures: 14 | 15 | get_config 16 | set_config 17 | get_grid_from_config 18 | read_csv_output 19 | -------------------------------------------------------------------------------- /tests/data/glacier/glacier_utm.yml: -------------------------------------------------------------------------------- 1 | meta: 2 | name: merit_utm_test_data 3 | 4 | glaciers_3857: 5 | uri: ./glaciers_3857.geojson 6 | data_type: GeoDataFrame 7 | driver: 8 | name: pyogrio 9 | metadata: 10 | crs: 3857 11 | glaciers_4326: 12 | uri: ./glaciers_4326.geojson 13 | data_type: GeoDataFrame 14 | driver: 15 | name: pyogrio 16 | metadata: 17 | crs: 4326 18 | -------------------------------------------------------------------------------- /docs/api/advanced/workflows/demand.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow.workflows.demand 2 | 3 | .. _api_workflows_demand: 4 | 5 | ======== 6 | Demand 7 | ======== 8 | 9 | .. autosummary:: 10 | :toctree: _generated 11 | :nosignatures: 12 | 13 | allocation_areas 14 | domestic 15 | domestic_from_population 16 | other_demand 17 | surfacewaterfrac_used 18 | irrigation 19 | irrigation_from_vector 20 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Python: Debug Tests", 6 | "type": "debugpy", 7 | "request": "launch", 8 | "program": "${file}", 9 | "purpose": [ 10 | "debug-test" 11 | ], 12 | "justMyCode": false, 13 | "console": "integratedTerminal" 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /docs/api/advanced/workflows/landuse.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow.workflows.landuse 2 | 3 | .. _api_workflows_landuse: 4 | 5 | ======== 6 | Landuse 7 | ======== 8 | 9 | .. autosummary:: 10 | :toctree: _generated 11 | :nosignatures: 12 | 13 | landuse 14 | landuse_from_vector 15 | lai 16 | create_lulc_lai_mapping_table 17 | lai_from_lulc_mapping 18 | add_paddy_to_landuse 19 | add_planted_forest_to_landuse 20 | -------------------------------------------------------------------------------- /hydromt_wflow/data/registry.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "artifact-data.tar.gz": "f73e604c32f6d7c3513bb00addaf39c3e2a880f46a51a59ea1ec0fdaa1fb80c3", 4 | "build-data.tar.gz": "a3b940fd6ff6ba72bc2c5f01efd2b8bf7f6779352a974a2180811090e7072502", 5 | "wflow-models.tar.gz": "619939b7ba293beb06060d9e07844442ba29c8dd620fa4d383ad4a2910ef1a51" 6 | }, 7 | "url": "doi:10.5281/zenodo.15263435", 8 | "version": "v0.1.1" 9 | } 10 | -------------------------------------------------------------------------------- /hydromt_wflow/data/lulc/v1.0/paddy_mapping.csv: -------------------------------------------------------------------------------- 1 | paddy,description,landuse,vegetation_kext,land_manning_n,soil_compacted_fraction,vegetation_root_depth,vegetation_leaf_storage,vegetation_wood_storage,land_water_fraction,vegetation_crop_factor,vegetation_feddes_alpha_h1,vegetation_feddes_h1,vegetation_feddes_h2,vegetation_feddes_h3_high,vegetation_feddes_h3_low,vegetation_feddes_h4,erosion_usle_c 2 | 1,Paddy field,1,0.35,0.125,0,106.8,0.042,0.005,0,1.15,0,100,55,-160,-250,-16000,0.15 3 | -------------------------------------------------------------------------------- /examples/wflow_piave_clip/staticgeoms/region.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "region", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 12.325, 46.341666666666661 ], [ 12.325, 46.675 ], [ 12.008333333333351, 46.675 ], [ 12.008333333333351, 46.341666666666661 ], [ 12.325, 46.341666666666661 ] ] ] } } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Issue addressed 2 | Fixes # 3 | 4 | ## Explanation 5 | Explain how you addressed the bug/feature request, what choices you made and why. 6 | 7 | ## Checklist 8 | - [ ] Updated tests or added new tests 9 | - [ ] Branch is up to date with `main` 10 | - [ ] Tests & pre-commit hooks pass 11 | - [ ] Updated documentation if needed 12 | 13 | ## Additional Notes (optional) 14 | Add any additional notes or information that may be helpful. 15 | -------------------------------------------------------------------------------- /hydromt_wflow/data/lulc/v0.8/paddy_mapping.csv: -------------------------------------------------------------------------------- 1 | glcnmo,description,landuse,vegetation_kext,land_manning_n,soil_compacted_fraction,vegetation_root_depth,vegetation_leaf_storage,vegetation_wood_storage,land_water_fraction,vegetation_crop_factor,vegetation_feddes_alpha_h1,vegetation_feddes_h1,vegetation_feddes_h2,vegetation_feddes_h3_high,vegetation_feddes_h3_low,vegetation_feddes_h4,erosion_usle_c,Cov_River 2 | 12,Paddy field,12,0.6,0.2,0,106.8,0.127,0,0,1.2,0,100,55,-160,-250,-16000,0.05,1.97 3 | -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_clip/staticgeoms/region.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "region", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 12.325, 46.341666666666661 ], [ 12.325, 46.675 ], [ 12.008333333333351, 46.675 ], [ 12.008333333333351, 46.341666666666661 ], [ 12.325, 46.341666666666661 ] ] ] } } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /hydromt_wflow/data/rivwth/koppen_geiger.csv: -------------------------------------------------------------------------------- 1 | class,base_class,name 2 | 1,1,Af 3 | 2,1,Am 4 | 3,1,As 5 | 4,1,Aw 6 | 5,2,BSh 7 | 6,2,BSk 8 | 7,2,BWh 9 | 8,2,BWk 10 | 9,3,Cfa 11 | 10,3,Cfb 12 | 11,3,Cfc 13 | 12,3,Csa 14 | 13,3,Csb 15 | 14,3,Csc 16 | 15,3,Cwa 17 | 16,3,Cwb 18 | 17,3,Cwc 19 | 18,4,Dfa 20 | 19,4,Dfb 21 | 20,4,Dfc 22 | 21,4,Dfd 23 | 22,4,Dsa 24 | 23,4,Dsb 25 | 24,4,Dsc 26 | 25,4,Dsd 27 | 26,4,Dwa 28 | 27,4,Dwb 29 | 28,4,Dwc 30 | 29,4,Dwd 31 | 30,5,EF 32 | 31,5,ET 33 | 32,6,Ocean 34 | -------------------------------------------------------------------------------- /hydromt_wflow/data/rivwth/regr_chelsa.csv: -------------------------------------------------------------------------------- 1 | base_class,precip,area,discharge_a,discharge_b,source 2 | 0,1.8590092e-05,-0.014341378,13.17,0.46,koppen_geiger 3 | 1,2.9624747e-05,-0.040973634,13.51,0.44,koppen_geiger 4 | 2,1.7258212e-06,-0.00039480231,11.55,0.49,koppen_geiger 5 | 3,1.1418121e-05,-0.0072318646,6.33,0.55,koppen_geiger 6 | 4,7.3626102e-06,-0.0011506991,8.54,0.54,koppen_geiger 7 | 5,1.8073044e-05,-0.0057484359,23.83,0.28,koppen_geiger 8 | 6,4.7155307e-05,-0.084416583,2.6,0.48,koppen_geiger 9 | -------------------------------------------------------------------------------- /docs/api/advanced/workflows/reservoirs.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow.workflows.reservoirs 2 | 3 | .. _api_workflows_reservoirs: 4 | 5 | =========== 6 | Reservoirs 7 | =========== 8 | 9 | .. autosummary:: 10 | :toctree: _generated 11 | :nosignatures: 12 | 13 | reservoir_id_maps 14 | reservoir_simple_control_parameters 15 | reservoir_parameters 16 | merge_reservoirs 17 | merge_reservoirs_sediment 18 | create_reservoirs_geoms 19 | create_reservoirs_geoms_sediment 20 | -------------------------------------------------------------------------------- /examples/wflow_piave_subbasin/staticgeoms/region.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "region", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 12.741666666666671, 45.80833333333333 ], [ 12.741666666666671, 46.691666666666663 ], [ 11.775, 46.691666666666663 ], [ 11.775, 45.80833333333333 ], [ 12.741666666666671, 45.80833333333333 ] ] ] } } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | # there is no conda support for dependabot so this is the closest analog 4 | # since the conda deps are also built from pyproject.toml it should work well enough 5 | - package-ecosystem: "pip" 6 | directory: "/" # Location of package manifests 7 | schedule: 8 | interval: "weekly" 9 | - package-ecosystem: "github-actions" 10 | directory: "/" 11 | schedule: 12 | # Check for updates to GitHub Actions every week 13 | interval: "weekly" 14 | -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_subbasin/staticgeoms/region.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "region", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 12.741666666666671, 45.80833333333333 ], [ 12.741666666666671, 46.691666666666663 ], [ 11.775, 46.691666666666663 ], [ 11.775, 45.80833333333333 ], [ 12.741666666666671, 45.80833333333333 ] ] ] } } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /examples/wflow_sediment_piave_subbasin/staticgeoms/region.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "region", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 12.741666666666671, 45.80833333333333 ], [ 12.741666666666671, 46.691666666666663 ], [ 11.775, 46.691666666666663 ], [ 11.775, 45.80833333333333 ], [ 12.741666666666671, 45.80833333333333 ] ] ] } } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /examples/linux64/wflow_sediment_piave_subbasin/staticgeoms/region.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "region", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 12.741666666666671, 45.80833333333333 ], [ 12.741666666666671, 46.691666666666663 ], [ 11.775, 46.691666666666663 ], [ 11.775, 45.80833333333333 ], [ 12.741666666666671, 45.80833333333333 ] ] ] } } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /examples/gauges_observed_flow.csv: -------------------------------------------------------------------------------- 1 | time;Q_6349410;Q_6349400;Q_6349411 2 | 2010-02-03T00:00:00;20.63727294;40.4367125;9.237468864 3 | 2010-02-04T00:00:00;26.21875575;54.46918112;11.94857033 4 | 2010-02-05T00:00:00;29.66606831;59.2240498;12.4642965 5 | 2010-02-06T00:00:00;32.1589512;59.21861451;11.93064957 6 | 2010-02-07T00:00:00;32.26008825;57.43010672;11.23056571 7 | 2010-02-08T00:00:00;31.09006663;54.0491823;10.51420303 8 | 2010-02-09T00:00:00;29.99882382;50.84542554;9.88308009 9 | 2010-02-10T00:00:00;29.10063939;48.09354881;9.312256295 10 | -------------------------------------------------------------------------------- /docs/dev_guide/intro.rst: -------------------------------------------------------------------------------- 1 | Developments 2 | ============ 3 | 4 | These pages provide guidelines on how to contribute to HydroMT-Wflow. 5 | Furthermore it informs you on planned developments and new features. 6 | 7 | .. toctree:: 8 | :caption: Table of Contents 9 | :maxdepth: 2 10 | :titlesonly: 11 | 12 | ../changelog.rst 13 | roadmap.rst 14 | Developer's guide 15 | dev_install.rst 16 | release_workflow.rst 17 | contributors.rst 18 | software_design.rst 19 | -------------------------------------------------------------------------------- /.github/workflows/purge_cache.yml: -------------------------------------------------------------------------------- 1 | name: Purge cache 2 | on: 3 | workflow_dispatch: 4 | workflow_call: 5 | 6 | jobs: 7 | cleanup: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Check out code 11 | uses: actions/checkout@v6 12 | 13 | - name: Cleanup cache 14 | run: | 15 | if gh cache list | grep -vq "No cache"; then 16 | gh cache delete -a 17 | else 18 | echo "No caches found. skipping..." 19 | fi 20 | env: 21 | GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} 22 | -------------------------------------------------------------------------------- /tests/data/glacier/glaciers_4326.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "glaciers_4326", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "fid": 1, "simple_id": 1, "AREA": 5.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 12.730325213481995, 45.794985655047618 ], [ 12.701715278463427, 45.72141584184935 ], [ 12.802258764385829, 45.732257797145039 ], [ 12.802258764385829, 45.732257797145039 ], [ 12.730325213481995, 45.794985655047618 ] ] ] } } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /tests/workflows/test_landuse.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | 3 | import hydromt_wflow.workflows as workflows 4 | 5 | 6 | def test_validate_lulc_vars_wrong_values(): 7 | with pytest.raises(ValueError, match="Invalid lulc_vars: {'invalid_var'}"): 8 | workflows.validate_lulc_vars(["landuse", "invalid_var"]) 9 | 10 | 11 | def test_validate_lulc_vars_correct_not_all_values(): 12 | # Should not raise 13 | workflows.validate_lulc_vars(["landuse", "erosion_usle_c"]) 14 | 15 | 16 | def test_validate_lulc_vars_all_correct_values(): 17 | workflows.validate_lulc_vars(workflows.LULC_VARS_MAPPING.keys()) 18 | -------------------------------------------------------------------------------- /tests/data/glacier/glaciers_3857.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "glaciers", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:EPSG::3857" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "fid": 1, "simple_id": 1, "AREA": 5.0 }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 1417133.320397587493062, 5747556.174593354575336 ], [ 1413948.476999691687524, 5735817.751783967018127 ], [ 1425140.926655154209584, 5737546.666771396063268 ], [ 1425140.926655154209584, 5737546.666771396063268 ], [ 1417133.320397587493062, 5747556.174593354575336 ] ] ] } } 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /examples/wflow_clip.yml: -------------------------------------------------------------------------------- 1 | global: 2 | config_filename: wflow_sbm.toml # name of the config file including paths to staticmaps / forcing / states to clip 3 | steps: 4 | - clip: # clip method 5 | region: # region to clip 6 | subbasin: [12.3006, 46.4324] # derive a subbasin with its outlet at the given x,y coordinates 7 | meta_streamorder: 4 # snapped to a river with minimum stream order (strord) of 4 8 | inverse_clip: false # whether to clip the region (false) or the part outside of the region (true) 9 | clip_states: true # whether to clip the states or not 10 | clip_forcing: true # whether to clipt eh forcing or not 11 | -------------------------------------------------------------------------------- /tests/test_benchmarks.py: -------------------------------------------------------------------------------- 1 | """Test plugin model class against hydromt.models.model_api.""" 2 | 3 | import copy 4 | from uuid import uuid4 5 | 6 | from hydromt_wflow.wflow_sbm import WflowSbmModel 7 | 8 | 9 | def inner_benchmark_loop(tmpdir, wflow_ini): 10 | # don't interfere with output of other rounds 11 | root = tmpdir.join(str(uuid4())) 12 | mod1 = WflowSbmModel(root=root, mode="w", data_libs="artifact_data") 13 | 14 | # Build model 15 | mod1.build(steps=copy.deepcopy(wflow_ini)) 16 | 17 | 18 | def test_outer_benchmark(tmpdir, wflow_ini, benchmark): 19 | benchmark.pedantic( 20 | inner_benchmark_loop, (tmpdir, wflow_ini), iterations=1, rounds=10 21 | ) 22 | -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | SPHINXPROJ = hydromt_wflow 8 | SOURCEDIR = . 9 | BUILDDIR = _build 10 | 11 | # Put it first so that "make" without argument is like "make help". 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 21 | -------------------------------------------------------------------------------- /hydromt_wflow/data/wflow_sediment/riverbedsed_mapping.csv: -------------------------------------------------------------------------------- 1 | strord,river_bed_sediment_d50,river_bed_clay_fraction,river_bed_silt_fraction,river_bed_sand_fraction,river_bed_gravel_fraction,river_kodatie_a,river_kodatie_b,river_kodatie_c,river_kodatie_d 2 | 1, 2.0,0.05,0.15,0.15,0.65,431884.8,1.0,1.0,2.0 3 | 2, 0.5,0.15,0.15,0.65,0.05,2123.4,3.3,0.468,0.613 4 | 3, 0.5,0.15,0.15,0.65,0.05,2123.4,3.3,0.468,0.613 5 | 4, 0.05,0.15,0.65,0.15,0.05,2829.6,3.646,0.406,0.412 6 | 5, 0.05,0.15,0.65,0.15,0.05,2829.6,3.646,0.406,0.412 7 | 6, 0.05,0.15,0.65,0.15,0.05,2829.6,3.646,0.406,0.412 8 | 7, 0.05,0.15,0.65,0.15,0.05,2829.6,3.646,0.406,0.412 9 | 8, 0.005,0.65,0.15,0.15,0.05,281.4,2.622,0.182,0.0 10 | -999, -999,-999,-999,-999,-999 11 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.insertFinalNewline": true, 3 | "editor.formatOnSave": true, 4 | "python.testing.pytestArgs": [ 5 | "." 6 | ], 7 | "python.testing.unittestEnabled": false, 8 | "python.testing.pytestEnabled": true, 9 | "[python]": { 10 | "editor.defaultFormatter": "charliermarsh.ruff" 11 | }, 12 | "mypy-type-checker.importStrategy": "fromEnvironment", 13 | "sonarlint.connectedMode.project": { 14 | "connectionId": "deltares", 15 | "projectKey": "Deltares_hydromt_wflow" 16 | }, 17 | "cSpell.words": [ 18 | "feddes", 19 | "hydromt", 20 | "landuse", 21 | "lulc", 22 | "Wflow" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /examples/wflow_piave_subbasin/run_results/output2.csv: -------------------------------------------------------------------------------- 1 | time,Q_6349410,Q_6349400,Q_6349411 2 | 2010-02-03T00:00:00,0.9723508866427331,1.5872206048170008,0.4186168267270336 3 | 2010-02-04T00:00:00,1.5537859541145214,2.2548005458121776,0.4535063436911434 4 | 2010-02-05T00:00:00,1.5544123442018567,2.262038324456509,0.4598004466020715 5 | 2010-02-06T00:00:00,1.5587428410157584,2.2735120843732566,0.4664600723650531 6 | 2010-02-07T00:00:00,1.6007250675734042,2.3148961437314033,0.4730612865922743 7 | 2010-02-08T00:00:00,1.5674281581428517,2.295460820708534,0.47964072178117956 8 | 2010-02-09T00:00:00,1.5681401235612595,2.3035185748498583,0.4863862925225664 9 | 2010-02-10T00:00:00,1.5730951415533472,2.684864054454837,0.4932789056943736 10 | -------------------------------------------------------------------------------- /hydromt_wflow/workflows/__init__.py: -------------------------------------------------------------------------------- 1 | """HydroMT wflow workflows.""" 2 | 3 | from hydromt_wflow.workflows.basemaps import * 4 | from hydromt_wflow.workflows.connect import * 5 | from hydromt_wflow.workflows.demand import * 6 | from hydromt_wflow.workflows.forcing import * 7 | from hydromt_wflow.workflows.gauges import * 8 | from hydromt_wflow.workflows.glaciers import * 9 | from hydromt_wflow.workflows.landuse import * 10 | from hydromt_wflow.workflows.reservoirs import * 11 | from hydromt_wflow.workflows.river import * 12 | from hydromt_wflow.workflows.rootzoneclim import * 13 | from hydromt_wflow.workflows.soilgrids import * 14 | from hydromt_wflow.workflows.soilparams import * 15 | from hydromt_wflow.workflows.states import * 16 | -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_subbasin/run_results/output2.csv: -------------------------------------------------------------------------------- 1 | time,Q_6349410,Q_6349400,Q_6349411 2 | 2010-02-03T00:00:00,0.9723508866427331,1.5872206048170008,0.4186168267270336 3 | 2010-02-04T00:00:00,1.5537859541145214,2.2548005458121776,0.4535063436911434 4 | 2010-02-05T00:00:00,1.5544123442018567,2.262038324456509,0.4598004466020715 5 | 2010-02-06T00:00:00,1.5587428410157584,2.2735120843732566,0.4664600723650531 6 | 2010-02-07T00:00:00,1.6007250675734042,2.3148961437314033,0.4730612865922743 7 | 2010-02-08T00:00:00,1.5674281581428517,2.295460820708534,0.47964072178117956 8 | 2010-02-09T00:00:00,1.5681401235612595,2.3035185748498583,0.4863862925225664 9 | 2010-02-10T00:00:00,1.5730951415533472,2.684864054454837,0.4932789056943736 10 | -------------------------------------------------------------------------------- /docs/user_guide/1_getting_started_hydromt/data_catalog.rst: -------------------------------------------------------------------------------- 1 | .. _data_catalog: 2 | 3 | Data Catalog 4 | ============ 5 | 6 | The HydroMT core documentation provides comprehensive information on how to manage and extend data catalogs. 7 | You can explore the guides below for detailed instructions and examples. 8 | 9 | .. toctree:: 10 | :hidden: 11 | :maxdepth: 1 12 | :titlesonly: 13 | 14 | Preparing a data catalog 15 | Supported data types 16 | Predefined catalogs 17 | -------------------------------------------------------------------------------- /.github/workflows/compare-benchmark.yml: -------------------------------------------------------------------------------- 1 | name: Compare performance against previous benchmark 2 | 3 | on: 4 | workflow_dispatch: 5 | 6 | 7 | jobs: 8 | test: 9 | defaults: 10 | run: 11 | shell: bash -l {0} 12 | 13 | name: Record benchmark 14 | runs-on: "ubuntu-latest" 15 | 16 | steps: 17 | - name: Checkout source 18 | uses: actions/checkout@v6 19 | 20 | - name: Setup pixi env 21 | uses: prefix-dev/setup-pixi@v0.9.3 22 | with: 23 | pixi-version: "v0.59.0" 24 | environments: test-full-py311 25 | locked: false 26 | cache: true 27 | 28 | - name: Tests 29 | run: | 30 | pixi run --locked -e test-full-py311 benchmark-compare 31 | -------------------------------------------------------------------------------- /docs/api/index.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow 2 | 3 | .. _api_reference: 4 | 5 | ############# 6 | API reference 7 | ############# 8 | 9 | The HydroMT-Wflow API provides classes and methods to build, update, and analyze 10 | Wflow models. The API is divided into the following sections: 11 | 12 | - :ref:`SBM model `: Class for building and managing SBM Wflow models. 13 | - :ref:`Sediment model `: Class for building and managing sediment transport models. 14 | - :ref:`Advanced API `: In-depth information, scientific motivations and advanced usage. 15 | 16 | .. toctree:: 17 | :hidden: 18 | :maxdepth: 1 19 | :titlesonly: 20 | 21 | sbm-model 22 | sediment-model 23 | advanced/index 24 | -------------------------------------------------------------------------------- /tests/data/test_stations.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "test_stations", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "ID": 1001, "Name": "Gauge1", "x": 11.9594, "y": 45.8925, "uparea": 3642.0 }, "geometry": { "type": "Point", "coordinates": [ 11.9594, 45.8925 ] } }, 7 | { "type": "Feature", "properties": { "ID": 1002, "Name": "Gauge2", "x": 12.3395, "y": 46.1492, "uparea": 2.0 }, "geometry": { "type": "Point", "coordinates": [ 12.3395, 46.1492 ] } }, 8 | { "type": "Feature", "properties": { "ID": 1003, "Name": "Gauge3", "x": 12.0785, "y": 46.1122, "uparea": null }, "geometry": { "type": "Point", "coordinates": [ 12.0785, 46.1122 ] } } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /docs/_templates/component-class.rst: -------------------------------------------------------------------------------- 1 | {{ fullname }} 2 | {{ underline }} 3 | 4 | .. currentmodule:: {{ module }} 5 | 6 | Summary of Methods and Attributes 7 | --------------------------------- 8 | 9 | .. list-table:: 10 | :header-rows: 1 11 | :widths: 20 40 40 12 | 13 | * - Component class 14 | - Methods 15 | - Attributes 16 | 17 | * - :class:`~{{ fullname }}` 18 | - {% for m in methods %}:meth:`~{{ fullname }}.{{ m }}`{% if not loop.last %}, {% endif %}{% endfor %} 19 | - {% for a in attributes %}:attr:`~{{ fullname }}.{{ a }}`{% if not loop.last %}, {% endif %}{% endfor %} 20 | 21 | .. autoclass:: {{ objname }} 22 | :members: 23 | :undoc-members: 24 | :inherited-members: 25 | :show-inheritance: 26 | :member-order: bysource 27 | -------------------------------------------------------------------------------- /docs/user_guide/2_sbm_model/index.rst: -------------------------------------------------------------------------------- 1 | ================================== 2 | Working with the Wflow SBM model 3 | ================================== 4 | 5 | With the Hydromt-Wflow plugin, you can easily work with Wflow SBM models. 6 | This plugin contains relevant functions for setting up or adjusting models: 7 | 8 | * :ref:`building a model `: building a model from scratch. 9 | * :ref:`updating a model `: updating an existing model (e.g. update datafeeds). 10 | * :ref:`clipping a model `: changing the spatial domain of an existing model (e.g. select subbasins from a larger model). 11 | 12 | 13 | .. toctree:: 14 | :hidden: 15 | :titlesonly: 16 | 17 | 1_methods_components 18 | 2_build 19 | 3_update 20 | 4_clip 21 | -------------------------------------------------------------------------------- /docs/user_guide/3_sediment_model/index.rst: -------------------------------------------------------------------------------- 1 | ===================================== 2 | Working with the Wflow Sediment model 3 | ===================================== 4 | 5 | 6 | 7 | With the Hydromt-Wflow plugin, you can easily work with Wflow Sediment models. 8 | This plugin contains as well relevant functions for setting up or adjusting Wflow Sediment models: 9 | 10 | * :ref:`building a model `: building a model from scratch. 11 | * :ref:`updating a model `: updating an existing model (e.g. update datafeeds). 12 | * :ref:`clipping a model `: changing the spatial domain of an existing model (e.g. select subbasins from a larger model). 13 | 14 | 15 | .. toctree:: 16 | :maxdepth: 2 17 | :hidden: 18 | :titlesonly: 19 | 20 | 1_methods_components.rst 21 | 2_build.rst 22 | 3_update.rst 23 | 4_clip.rst 24 | -------------------------------------------------------------------------------- /.binder/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ghcr.io/prefix-dev/pixi:0.61.0-focal 2 | RUN groupadd deltares && useradd deltares --uid 1000 -m -g deltares 3 | 4 | USER deltares 5 | WORKDIR /home/deltares 6 | 7 | ENV PATH=/home/deltares/.pixi/bin:$PATH 8 | ENV HOME=/home/deltares/ 9 | 10 | COPY pixi.lock pyproject.toml README.rst ./ 11 | COPY ./hydromt_wflow ./hydromt_wflow 12 | COPY ./docs ./docs 13 | COPY examples ./examples 14 | 15 | RUN pixi install --locked -e docs \ 16 | && rm -rf .cache \ 17 | && find .pixi -type f -name "*.pyc" -delete 18 | 19 | ENV HOME=/home/deltares \ 20 | NUMBA_CACHE_DIR=${HOME}/.cache/numba \ 21 | USE_PYGEOS=0 \ 22 | PYTHONDONTWRITEBYTECODE=1 \ 23 | PYDEVD_DISABLE_FILE_VALIDATION=1 24 | WORKDIR ${HOME} 25 | 26 | ENTRYPOINT ["pixi", "run", "-e", "docs"] 27 | CMD ["pixi", "run", "-e", "docs" , "jupyter", "notebook", "--no-browser", "--port=8888", "--ip=0.0.0.0"] 28 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | repos: 3 | - repo: https://github.com/pre-commit/pre-commit-hooks 4 | rev: v6.0.0 5 | hooks: 6 | - id: trailing-whitespace 7 | - id: end-of-file-fixer 8 | - id: check-yaml 9 | - id: check-added-large-files 10 | - id: check-ast 11 | - id: check-json 12 | - id: debug-statements 13 | - id: mixed-line-ending 14 | - repo: https://github.com/astral-sh/ruff-pre-commit 15 | # Ruff version. 16 | rev: v0.14.7 17 | hooks: 18 | # run linter and apply fixes where possible 19 | - id: ruff 20 | types_or: [python, pyi] 21 | args: [--fix] 22 | # Run the formatter. 23 | - id: ruff-format 24 | types_or: [python, pyi] 25 | - repo: https://github.com/kynan/nbstripout 26 | # clear output from Jupyter notebooks 27 | rev: 0.8.2 28 | hooks: 29 | - id: nbstripout 30 | -------------------------------------------------------------------------------- /docs/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pushd %~dp0 4 | 5 | REM Command file for Sphinx documentation 6 | 7 | if "%SPHINXBUILD%" == "" ( 8 | set SPHINXBUILD=sphinx-build 9 | ) 10 | set SOURCEDIR=. 11 | set BUILDDIR=_build 12 | set SPHINXPROJ=hydromt_wflow 13 | 14 | if "%1" == "" goto help 15 | 16 | %SPHINXBUILD% >NUL 2>NUL 17 | if errorlevel 9009 ( 18 | echo. 19 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx 20 | echo.installed, then set the SPHINXBUILD environment variable to point 21 | echo.to the full path of the 'sphinx-build' executable. Alternatively you 22 | echo.may add the Sphinx directory to PATH. 23 | echo. 24 | echo.If you don't have Sphinx installed, grab it from 25 | echo.http://sphinx-doc.org/ 26 | exit /b 1 27 | ) 28 | 29 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 30 | goto end 31 | 32 | :help 33 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 34 | 35 | :end 36 | popd 37 | -------------------------------------------------------------------------------- /hydromt_wflow/components/__init__.py: -------------------------------------------------------------------------------- 1 | """Wflow model components submodule.""" 2 | 3 | from hydromt_wflow.components.config import WflowConfigComponent 4 | from hydromt_wflow.components.forcing import WflowForcingComponent 5 | from hydromt_wflow.components.geoms import WflowGeomsComponent 6 | from hydromt_wflow.components.output_csv import WflowOutputCsvComponent 7 | from hydromt_wflow.components.output_grid import WflowOutputGridComponent 8 | from hydromt_wflow.components.output_scalar import WflowOutputScalarComponent 9 | from hydromt_wflow.components.states import WflowStatesComponent 10 | from hydromt_wflow.components.staticmaps import WflowStaticmapsComponent 11 | from hydromt_wflow.components.tables import WflowTablesComponent 12 | 13 | __all__ = [ 14 | "WflowConfigComponent", 15 | "WflowForcingComponent", 16 | "WflowGeomsComponent", 17 | "WflowStatesComponent", 18 | "WflowStaticmapsComponent", 19 | "WflowTablesComponent", 20 | "WflowOutputGridComponent", 21 | "WflowOutputScalarComponent", 22 | "WflowOutputCsvComponent", 23 | ] 24 | -------------------------------------------------------------------------------- /docs/user_guide/5_setup_methods/setup_x.rst: -------------------------------------------------------------------------------- 1 | Setup Method: setup_x 2 | ===================== 3 | 4 | .. note:: 5 | 6 | This section is currently under development and will be expanded in a future release. 7 | 8 | The `setup_x` method is part of the Wflow model setup workflow. It is used to initialize specific components or configurations required for a model run. A full technical description of the method, including scientific background, parameterization, and example usage, will be added soon. 9 | 10 | Planned content: 11 | - Detailed description of the setup process and its role in the HydroMT-Wflow workflow. 12 | - Equations and conceptual diagrams explaining the underlying hydrological processes. 13 | - References to relevant literature. 14 | - Example use cases and parameter configurations. 15 | - Link to the API documentation for function arguments. 16 | 17 | .. seealso:: 18 | 19 | For an overview of available setup methods, their implementation and context within HydroMT-Wflow, refer to the main 20 | Model classes :ref:`WflowSbmModel ` and :ref:`WflowSedimentModel `. 21 | -------------------------------------------------------------------------------- /.zenodo.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "hydroMT-wflow", 3 | "description": "wflow plugin for hydroMT.", 4 | "upload_type": "software", 5 | "creators": [ 6 | { 7 | "affiliation": "Deltares", 8 | "name": "Eilander, Dirk", 9 | "orcid": "0000-0002-0951-8418" 10 | }, 11 | { 12 | "affiliation": "Deltares", 13 | "name": "Boisgontier, Hélène" 14 | }, 15 | { 16 | "affiliation": "Deltares", 17 | "name": "van Verseveld, Willem", 18 | "orcid": "0000-0003-3311-738X" 19 | }, 20 | { 21 | "affiliation": "Deltares", 22 | "name": "Bouaziz, Laurène" 23 | }, 24 | { 25 | "affiliation": "Deltares", 26 | "name": "Hegnauer, Mark" 27 | }, 28 | { 29 | "affiliation": "Deltares", 30 | "name": "Buitink, Joost" 31 | }, 32 | { 33 | "affiliation": "Deltares", 34 | "name": "Dalmijn, Brendan" 35 | } 36 | ], 37 | "access_right": "open", 38 | "license": "MIT" 39 | } 40 | -------------------------------------------------------------------------------- /.github/workflows/pre_commit_auto_update.yml: -------------------------------------------------------------------------------- 1 | name: Pre-commit auto update 2 | on: 3 | schedule: 4 | # At 03:00 on day 3 of the month 5 | - cron: "0 3 3 * *" 6 | # on demand 7 | workflow_dispatch: 8 | jobs: 9 | auto-update: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout code 13 | uses: actions/checkout@v6 14 | with: 15 | ssh-key: ${{ secrets.SSH_PRIVATE_KEY }} 16 | - name: Setup python for pre-commit 17 | uses: actions/setup-python@v6 18 | with: 19 | python-version: "3.12" 20 | - name: Update pre-commit hooks 21 | uses: browniebroke/pre-commit-autoupdate-action@main 22 | - name: Create PR with updated hook versions 23 | uses: peter-evans/create-pull-request@v8 24 | if: always() 25 | with: 26 | token: ${{ secrets.GITHUB_TOKEN }} 27 | branch: update/pre-commit-hooks 28 | title: Update pre-commit hooks 29 | commit-message: "Update pre-commit hooks" 30 | body: Update versions of pre-commit hooks to latest version. 31 | author: "GitHub " 32 | -------------------------------------------------------------------------------- /tests/workflows/test_reservoirs.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import xarray as xr 3 | 4 | from hydromt_wflow.workflows.reservoirs import set_rating_curve_layer_data_type 5 | 6 | 7 | def test_set_rating_curve_layer_data_type(): 8 | # create some test data 9 | data = np.random.randint(4, 5) 10 | coords = {"x": np.arange(4), "y": np.arange(5)} 11 | attrs = {"description": "Test data", "_FillValue": -999.0} 12 | da = xr.DataArray(data, coords=coords, dims=["x", "y"], attrs=attrs).astype( 13 | np.float32 14 | ) 15 | da[0, 0] = np.nan 16 | da2 = da.copy(deep=True) 17 | da2 = da2.fillna(-999.0) 18 | ds = xr.Dataset({"reservoir_rating_curve": da}) 19 | ds2 = xr.Dataset({"reservoir_rating_curve": da2}) 20 | 21 | ds = set_rating_curve_layer_data_type(ds) 22 | ds2 = set_rating_curve_layer_data_type(ds2) 23 | 24 | assert ds["reservoir_rating_curve"].dtype == np.int32 25 | assert ds2["reservoir_rating_curve"].dtype == np.int32 26 | assert ds["reservoir_rating_curve"].raster.nodata == -999 27 | assert ds2["reservoir_rating_curve"].attrs["_FillValue"] == -999 28 | assert ds["reservoir_rating_curve"][0, 0].values == -999 29 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Request 3 | description: Suggest an idea/enhancement for HydroMT-Wflow 4 | labels: [enhancement, needs refinement] 5 | 6 | body: 7 | - type: dropdown 8 | id: checks 9 | attributes: 10 | description: What kind of feature request is this? 11 | label: Kind of request 12 | options: 13 | - Adding new functionality 14 | - Changing existing functionality 15 | - Removing existing functionality 16 | - type: textarea 17 | id: description 18 | attributes: 19 | description: > 20 | Please provide a clear and concise description of the feature you're requesting 21 | label: Enhancement Description 22 | validations: 23 | required: true 24 | - type: textarea 25 | id: use-case 26 | attributes: 27 | description: > 28 | Please describe a situation in which this feature would be useful to you, with code or cli examples if possible 29 | label: Use case 30 | - type: textarea 31 | id: context 32 | attributes: 33 | description: > 34 | Please add any other context about the enhancement here 35 | label: Additional Context 36 | -------------------------------------------------------------------------------- /docs/_static/theme-deltares.css: -------------------------------------------------------------------------------- 1 | /* Override the default color set in the original theme */ 2 | 3 | html[data-theme="light"] { 4 | /* NOTE: added after pydata v0.9 */ 5 | --pst-color-primary: #080c80 !important; 6 | 7 | /* hyperlinks */ 8 | --pst-color-link: rgb(13, 56, 224); 9 | 10 | /* panels */ 11 | --pst-color-preformatted-border: #080c80 !important; 12 | --pst-color-panel-background: #f0f0f075; 13 | 14 | /* navbar */ 15 | /* NOTE: does not work since v0.9 */ 16 | --pst-color-navbar-link: rgb(237, 237, 255); 17 | --pst-color-navbar-link-hover: #fff; 18 | --pst-color-navbar-link-active: #fff; 19 | 20 | /* sphinx design */ 21 | /* NOTE: does not work since v0.9 */ 22 | --sd-color-card-border-hover: #080c80; 23 | --sd-color-tabs-label-active: #080c80; 24 | --sd-color-tabs-label-hover: #080c80; 25 | --sd-color-tabs-underline-active: #080c80; 26 | } 27 | 28 | /* enlarge deltares & github icon size; only works with local/url svg files; not with fa icons */ 29 | img.icon-link-image { 30 | height: 2.5em !important; 31 | } 32 | 33 | i.fa-github { 34 | font-size: 2.5em; 35 | } 36 | 37 | .sd-text-icon.blue-icon { 38 | color: #080c80; 39 | } 40 | -------------------------------------------------------------------------------- /tests/components/test_tables_component.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | import pandas as pd 4 | 5 | from hydromt_wflow.wflow_sbm import WflowSbmModel 6 | 7 | 8 | def test_write_and_read_with_custom_staticmaps_folder(tmp_path: Path): 9 | model = WflowSbmModel(tmp_path) 10 | model.staticmaps.write("staticmaps/staticmaps.nc") 11 | test_df = pd.DataFrame({"a": [1, 2, 3]}) 12 | model.tables.set(test_df, name="test") 13 | model.tables.write() 14 | 15 | assert (tmp_path / "staticmaps" / "test.csv").is_file() 16 | 17 | model2 = WflowSbmModel(tmp_path, mode="r") 18 | model2.config.set("input.path_static", "staticmaps/staticmaps.nc") 19 | model2.tables.read() 20 | pd.testing.assert_frame_equal(model2.tables.data["test"], test_df) 21 | 22 | 23 | def test_write_and_read_without_staticmaps_folder(tmp_path: Path): 24 | model = WflowSbmModel(tmp_path) 25 | test_df = pd.DataFrame({"a": [1, 2, 3]}) 26 | model.tables.set(test_df, name="test") 27 | model.tables.write() 28 | 29 | assert (tmp_path / "test.csv").is_file() 30 | 31 | model2 = WflowSbmModel(tmp_path, mode="r") 32 | model2.tables.read() 33 | pd.testing.assert_frame_equal(model2.tables.data["test"], test_df) 34 | -------------------------------------------------------------------------------- /docs/dev_guide/contributors.rst: -------------------------------------------------------------------------------- 1 | .. _contributors: 2 | 3 | Contributors 4 | ============ 5 | 6 | * Hélène Boisgontier `@hboisgon `_ 7 | * Dirk Eilander `@DirkEilander `_ 8 | * Laurène Bouaziz `@laurenebouaziz `_ 9 | * Mark Hegnauer `@markhegnauer `_ 10 | * Indra Marth `@IMarth `_ 11 | * Willem van Verseveld `@verseve `_ 12 | * Brendan Dalmijn `@dalmijn `_ 13 | * Joost Buitink `@JoostBuitink `_ 14 | * Sebastian Hartgring `@shartgring `_ 15 | * Ruben Imhoff `@RubenImhoff `_ 16 | * Jurian Beunk `@jurianbeunk `_ 17 | * Ali Meshgi `@alimeshgi `_ 18 | * Anaïs Couasnon `@couasnonanais `_ 19 | * Sam Vente `@savente93 `_ 20 | * Luuk Blom `@LuukBlom `_ 21 | * Marnix Kraus `@deltamarnix `_ 22 | * Tjalling de Jong `@Tjalling-dejong `_ 23 | -------------------------------------------------------------------------------- /docs/user_guide/5_setup_methods/index.rst: -------------------------------------------------------------------------------- 1 | Technical description 2 | ===================== 3 | 4 | This section provides detailed technical descriptions of the setup methods available within HydroMT-Wflow. 5 | Each setup method is described on its own page, including an overview of the method, its underlying scientific 6 | background, and a link to the corresponding API function for detailed argument descriptions. 7 | 8 | In addition, this section will include illustrative figures and relevant literature references to clarify the 9 | underlying processes and assumptions. Examples of how to use these setup methods in workflows are provided 10 | separately in the **User Guide**. 11 | 12 | .. note:: 13 | 14 | The setup methods form the bridge between raw input data and model inputs and parameters. 15 | 16 | Understanding the rationale behind each setup method will help in applying HydroMT-Wflow and 17 | understand how the model parameters were derived, what are the assumptions and uncertainties behind the methods. 18 | 19 | 20 | .. warning:: 21 | 22 | This section is under construction. More setup methods and detailed descriptions will be added soon. 23 | 24 | .. toctree:: 25 | :maxdepth: 2 26 | :hidden: 27 | :titlesonly: 28 | 29 | setup_x 30 | setup_lulcmaps 31 | -------------------------------------------------------------------------------- /examples/wflow_piave_clip/staticgeoms/gauges_grdc.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "gauges_grdc", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "grdc_no": 6349410, "wmo_reg": 6, "sub_reg": 49, "river": "BOITE, TORRENTE", "station": "CANCIA", "country": "IT", "area": 313.0, "altitude": 818.0, "d_start": 1930, "d_end": 2008, "d_yrs": 79, "d_miss": 36.770057182464043, "m_start": null, "m_end": null, "m_yrs": null, "m_miss": null, "t_start": 1930, "t_end": 2008, "t_yrs": 79, "lta_discharge": 9.461, "r_volume_yr": 0.298362096, "r_height_yr": 953.23353354632604 }, "geometry": { "type": "Point", "coordinates": [ 12.216667, 46.433333 ] } }, 7 | { "type": "Feature", "properties": { "grdc_no": 6349411, "wmo_reg": 6, "sub_reg": 49, "river": "BOITE, TORRENTE", "station": "PODESTAGNO", "country": "IT", "area": 82.0, "altitude": 1330.0, "d_start": 1943, "d_end": 2008, "d_yrs": 66, "d_miss": 51.142821587090893, "m_start": null, "m_end": null, "m_yrs": null, "m_miss": null, "t_start": 1943, "t_end": 2008, "t_yrs": 66, "lta_discharge": 2.256, "r_volume_yr": 0.071145216, "r_height_yr": 867.6245853658537 }, "geometry": { "type": "Point", "coordinates": [ 12.116667, 46.6 ] } } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_clip/staticgeoms/gauges_grdc.geojson: -------------------------------------------------------------------------------- 1 | { 2 | "type": "FeatureCollection", 3 | "name": "gauges_grdc", 4 | "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, 5 | "features": [ 6 | { "type": "Feature", "properties": { "grdc_no": 6349410, "wmo_reg": 6, "sub_reg": 49, "river": "BOITE, TORRENTE", "station": "CANCIA", "country": "IT", "area": 313.0, "altitude": 818.0, "d_start": 1930, "d_end": 2008, "d_yrs": 79, "d_miss": 36.770057182464043, "m_start": null, "m_end": null, "m_yrs": null, "m_miss": null, "t_start": 1930, "t_end": 2008, "t_yrs": 79, "lta_discharge": 9.461, "r_volume_yr": 0.298362096, "r_height_yr": 953.23353354632604 }, "geometry": { "type": "Point", "coordinates": [ 12.216667, 46.433333 ] } }, 7 | { "type": "Feature", "properties": { "grdc_no": 6349411, "wmo_reg": 6, "sub_reg": 49, "river": "BOITE, TORRENTE", "station": "PODESTAGNO", "country": "IT", "area": 82.0, "altitude": 1330.0, "d_start": 1943, "d_end": 2008, "d_yrs": 66, "d_miss": 51.142821587090893, "m_start": null, "m_end": null, "m_yrs": null, "m_miss": null, "t_start": 1943, "t_end": 2008, "t_yrs": 66, "lta_discharge": 2.256, "r_volume_yr": 0.071145216, "r_height_yr": 867.6245853658537 }, "geometry": { "type": "Point", "coordinates": [ 12.116667, 46.6 ] } } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /docs/api/advanced/index.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow 2 | 3 | .. _api_reference_advanced: 4 | 5 | ######################### 6 | Advanced API reference 7 | ######################### 8 | 9 | The advanced HydroMT-Wflow API exposes the underlying classes, workflows, and utility 10 | functions used to build, extend, and customize Wflow models. These interfaces are primarily 11 | intended for developers and advanced users who want to script model setup workflows, create 12 | custom preprocessing routines, or integrate HydroMT-Wflow components into other systems. 13 | 14 | The API is organized into the following sections: 15 | 16 | - :ref:`Base model `: Core classes and methods for defining and managing Wflow models. 17 | - :ref:`Model components `: Classes and functions for handling specific model components like config, staticmaps, and forcing. 18 | - :ref:`Workflows `: Predefined workflows for common tasks such as setting up basemaps, reservoirs, and calibration. 19 | - :ref:`Utilities `: Helper functions for data processing, file I/O, and other common operations. 20 | 21 | 22 | .. toctree:: 23 | :hidden: 24 | :maxdepth: 1 25 | :titlesonly: 26 | 27 | base-model 28 | model-components 29 | workflows/index 30 | utilities 31 | -------------------------------------------------------------------------------- /docs/user_guide/3_sediment_model/4_clip.rst: -------------------------------------------------------------------------------- 1 | .. _sediment_clip: 2 | 3 | Clipping a model 4 | ---------------- 5 | This plugin allows to clip the following parts of an existing model for a smaller region from command line: 6 | 7 | - staticmaps 8 | - forcing 9 | - states 10 | - geoms 11 | - config (update reservoir settings) 12 | 13 | To clip a smaller model from an existing one use the ``update`` CLI command with the **clip** method: 14 | 15 | .. code-block:: console 16 | 17 | activate hydromt_wflow 18 | hydromt update wflow_sediment -o path/to/model_to_clip path/to/clipped_model -i clip_config.yml -v 19 | 20 | Here is an example of the clip config: 21 | 22 | .. code-block:: yaml 23 | 24 | steps: 25 | - clip: 26 | region: {"basin": [x, y]} # region to clip the model too 27 | inverse_clip: false # whether to clip outside or inside the region 28 | clip_states: true # whether to clip states 29 | clip_forcing: true # whether to clip forcing 30 | 31 | As for building, the recommended `region options `_ 32 | for a proper implementation of the clipped model are: 33 | 34 | - basin 35 | - subbasin 36 | 37 | See the following model API: 38 | 39 | * :py:func:`~WflowSedimentModel.clip` 40 | -------------------------------------------------------------------------------- /.github/workflows/record-benchmark.yml: -------------------------------------------------------------------------------- 1 | name: Record new benchmark 2 | 3 | on: 4 | workflow_dispatch: 5 | 6 | env: 7 | GH_TOKEN: ${{ github.token }} 8 | 9 | jobs: 10 | test: 11 | defaults: 12 | run: 13 | shell: bash -l {0} 14 | name: Record benchmark 15 | runs-on: "ubuntu-latest" 16 | steps: 17 | - name: Checkout source 18 | uses: actions/checkout@v6 19 | with: 20 | fetch-depth: 0 21 | 22 | - name: Setup pixi env 23 | uses: prefix-dev/setup-pixi@v0.9.3 24 | with: 25 | pixi-version: "v0.59.0" 26 | environments: test-full-py311 27 | locked: false 28 | cache: true 29 | 30 | - name: Record and Publish 31 | run: | 32 | pixi run --locked -e test-full-py311 benchmark-record 33 | 34 | git checkout -B "chore/record-benchmark" 35 | git config user.name "GitHub Actions Bot" 36 | git config user.email "" 37 | git add .benchmarks 38 | git commit -m "record benchmark" 39 | git push --set-upstream origin "chore/record-benchmark" 40 | 41 | gh pr create -B "main" -H "chore/record-benchmark" -t "Record new benchmark" -b "This is an automated PR to add benchmark timings" 42 | -------------------------------------------------------------------------------- /docs/getting_started/intro.rst: -------------------------------------------------------------------------------- 1 | Getting started 2 | =============== 3 | 4 | .. grid:: 2 5 | :gutter: 1 6 | 7 | .. grid-item-card:: 8 | :text-align: center 9 | :link: installation_guide 10 | :link-type: ref 11 | 12 | :octicon:`gear;5em;sd-text-icon blue-icon` 13 | +++ 14 | Installation guide 15 | 16 | .. grid-item-card:: 17 | :text-align: center 18 | :link: intro_user_guide 19 | :link-type: ref 20 | 21 | :octicon:`book;5em;sd-text-icon blue-icon` 22 | +++ 23 | User guide 24 | 25 | .. grid-item-card:: 26 | :text-align: center 27 | :link: api_reference 28 | :link-type: ref 29 | 30 | :octicon:`code-square;5em;sd-text-icon blue-icon` 31 | +++ 32 | API reference 33 | 34 | .. grid-item-card:: 35 | :text-align: center 36 | :link: example_index 37 | :link-type: doc 38 | 39 | :octicon:`graph;5em;sd-text-icon blue-icon` 40 | +++ 41 | Examples 42 | 43 | 44 | 45 | .. toctree:: 46 | :caption: Table of Contents 47 | :maxdepth: 2 48 | :hidden: 49 | :titlesonly: 50 | 51 | installation.rst 52 | example_index.rst 53 | User's stories 54 | faq.rst 55 | -------------------------------------------------------------------------------- /.github/workflows/system_test.yml: -------------------------------------------------------------------------------- 1 | name: System test 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | paths: 7 | - hydromt_wflow/**/* 8 | - tests/**/* 9 | - pixi.lock 10 | - pyproject.toml 11 | - .github/workflows/system_test.yml 12 | pull_request: 13 | branches: [main] 14 | paths: 15 | - hydromt_wflow/**/* 16 | - tests/**/* 17 | - pixi.lock 18 | - pyproject.toml 19 | - .github/workflows/system_test.yml 20 | workflow_dispatch: 21 | 22 | jobs: 23 | julia-test: 24 | runs-on: windows-latest 25 | 26 | steps: 27 | - name: Checkout hydromt_wflow 28 | uses: actions/checkout@v6 29 | - name: Checkout Wflow.jl 30 | uses: actions/checkout@v6 31 | with: 32 | repository: Deltares/Wflow.jl 33 | path: Wflow.jl 34 | ref: release/v1.0 35 | 36 | - name: Setup pixi 37 | uses: prefix-dev/setup-pixi@v0.9.3 38 | with: 39 | pixi-version: v0.59.0 40 | - name: Setup Julia 41 | uses: julia-actions/setup-julia@v2 42 | with: 43 | version: 1.11.3 44 | 45 | - name: Install Wflow 46 | run: pixi run install-wflow-julia ./Wflow.jl/Wflow 47 | 48 | - name: Run system tests 49 | run: pixi run system-test ${{ runner.temp }}/wflow_system_test ./Wflow.jl/Wflow 50 | -------------------------------------------------------------------------------- /examples/wflow_piave_subbasin/run_results/output.csv: -------------------------------------------------------------------------------- 1 | time,Q-max,res-volume,temp_bycoord,temp_byindex,Q_6349410,Q_6349400,Q_6349411,P_1 2 | 2010-02-03T00:00:00,61.666336298046105,4.28e7,0.8100000023841858,0.8100000023841858,13.888524742552857,22.226947590539872,5.2963763261235695,0.14586206824624098 3 | 2010-02-04T00:00:00,191.6401132502285,4.28e7,1.9600000381469727,1.9600000381469727,20.86273238584117,39.35561131620625,9.902367771364375,0.08958862627491905 4 | 2010-02-05T00:00:00,256.8708339783832,4.28e7,2.930000066757202,2.930000066757202,26.14913717262904,53.8189101293239,12.57504577644891,0.020665456382563382 5 | 2010-02-06T00:00:00,306.52135070256304,4.28e7,4.550000190734863,4.550000190734863,29.99760895182172,60.115549452282906,13.606311019398406,13.496975106898756 6 | 2010-02-07T00:00:00,334.5712513436857,4.28e7,6.96999979019165,6.96999979019165,32.7344885614807,61.37345908174749,13.252108279009036,6.093986776909248 7 | 2010-02-08T00:00:00,339.60779914583617,4.28e7,5.760000228881836,5.760000228881836,33.54202538286107,59.38318599301922,12.596543239923832,2.093345505770812 8 | 2010-02-09T00:00:00,330.20381016063084,4.28e7,2.759999990463257,2.759999990463257,32.784192810149,57.00282681990284,11.970397436696114,0.06219600690827359 9 | 2010-02-10T00:00:00,320.04396643774,4.28e7,2.0799999237060547,2.0799999237060547,31.869433114114127,54.42747910521726,11.394437266328307,0.38021173703394656 10 | -------------------------------------------------------------------------------- /examples/linux64/wflow_piave_subbasin/run_results/output.csv: -------------------------------------------------------------------------------- 1 | time,Q-max,res-volume,temp_bycoord,temp_byindex,Q_6349410,Q_6349400,Q_6349411,P_1 2 | 2010-02-03T00:00:00,61.666336298046105,4.28e7,0.8100000023841858,0.8100000023841858,13.888524742552857,22.226947590539872,5.2963763261235695,0.14586206824624098 3 | 2010-02-04T00:00:00,191.6401132502285,4.28e7,1.9600000381469727,1.9600000381469727,20.86273238584117,39.35561131620625,9.902367771364375,0.08958862627491905 4 | 2010-02-05T00:00:00,256.8708339783832,4.28e7,2.930000066757202,2.930000066757202,26.14913717262904,53.8189101293239,12.57504577644891,0.020665456382563382 5 | 2010-02-06T00:00:00,306.52135070256304,4.28e7,4.550000190734863,4.550000190734863,29.99760895182172,60.115549452282906,13.606311019398406,13.496975106898756 6 | 2010-02-07T00:00:00,334.5712513436857,4.28e7,6.96999979019165,6.96999979019165,32.7344885614807,61.37345908174749,13.252108279009036,6.093986776909248 7 | 2010-02-08T00:00:00,339.60779914583617,4.28e7,5.760000228881836,5.760000228881836,33.54202538286107,59.38318599301922,12.596543239923832,2.093345505770812 8 | 2010-02-09T00:00:00,330.20381016063084,4.28e7,2.759999990463257,2.759999990463257,32.784192810149,57.00282681990284,11.970397436696114,0.06219600690827359 9 | 2010-02-10T00:00:00,320.04396643774,4.28e7,2.0799999237060547,2.0799999237060547,31.869433114114127,54.42747910521726,11.394437266328307,0.38021173703394656 10 | -------------------------------------------------------------------------------- /hydromt_wflow/data/lulc/v1.0/esa_worldcover_mapping.csv: -------------------------------------------------------------------------------- 1 | esa,description,landuse,vegetation_kext,land_manning_n,soil_compacted_fraction,vegetation_root_depth,vegetation_leaf_storage,vegetation_wood_storage,land_water_fraction,vegetation_crop_factor,vegetation_feddes_alpha_h1,vegetation_feddes_h1,vegetation_feddes_h2,vegetation_feddes_h3_high,vegetation_feddes_h3_low,vegetation_feddes_h4,erosion_usle_c 2 | 10,Tree cover,10,0.8,0.5,0,406,0.23,0.09,0,1.1,1,0,-100,-400,-1000,-16000,0.0012 3 | 20,Shrubland,20,0.7,0.5,0,410,0.1,0.05,0,1.05,1,0,-100,-400,-1000,-16000,0.06 4 | 30,Grassland,30,0.6,0.2,0,106.8,0.1,0.01,0,1,1,0,-100,-400,-1000,-16000,0.04 5 | 40,Cropland,40,0.6,0.15,0,390.4,0.077,0.005,0,1.1,0,0,-100,-400,-1000,-16000,0.3 6 | 50,Built-up,50,0.6,0.015,0.9,257.4,0.1,0.03,0,1,1,0,-100,-400,-1000,-16000,0.001 7 | 60,Bare / sparse vegetation,60,0.6,0.015,0,10.7,0.1,0.03,0,-999,1,0,-100,-400,-1000,-16000,0.35 8 | 70,Snow and Ice,70,0,0.01,0,0,0,0,0,-999,1,0,-100,-400,-1000,-16000,0 9 | 80,Permanent water bodies,80,0,0.01,0,0,0,0,1,-999,1,0,-100,-400,-1000,-16000,0 10 | 90,Herbaceous wetland,90,0.6,0.125,0,106.8,0.1,0.01,0,1.2,1,0,-100,-400,-1000,-16000,0.001 11 | 95,Mangroves,95,0.8,0.5,0,369,0.23,0.09,0.5,1.05,1,0,-100,-400,-1000,-16000,0.008 12 | 100,Moss and lichen,100,0.6,0.085,0,136.9,0.09,0,0,1.05,1,0,-100,-400,-1000,-16000,0.001 13 | 0,No data,0,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999 14 | -------------------------------------------------------------------------------- /docs/user_guide/6_migration_guide/migration_wflow.rst: -------------------------------------------------------------------------------- 1 | .. _migration_wflow_v1: 2 | 3 | Migrating to Wflow.jl v1.0.0 4 | ============================= 5 | 6 | The Wflow.jl v1 update mostly introduces new organisation of the model configuration (TOML), renamed or new (for sediment only) parameters and merging of lakes and reservoirs. 7 | For a complete overview of the changes, refer to the official `Wflow.jl changelog `_. 8 | 9 | 10 | To convert an existing v0.x wflow sbm model with hydromt, you can use the cli command: 11 | 12 | .. code-block:: bash 13 | 14 | hydromt update -o -i -v 15 | 16 | Where 17 | 18 | - ```` is ``wflow_sbm`` or ``wflow_sediment`` 19 | - ```` is the folder containing your model 20 | - ```` is a configuration file specifying how to handle the migration. 21 | - ```` is the output folder for the migrated model. 22 | - For sediment: ``-d data_catalog.yml`` to specify a data catalog for preparing the extra parameters of wflow sediment. 23 | 24 | Template upgrade configuration files: 25 | 26 | - :download:`Wflow-SBM Upgrade yml ` 27 | - :download:`Wflow-Sediment Upgrade yml ` 28 | 29 | An example migration workflow notebook, is available :ref:`here `. 30 | -------------------------------------------------------------------------------- /docs/api/advanced/model-components.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow.components 2 | 3 | .. _api_components: 4 | 5 | ========== 6 | Components 7 | ========== 8 | 9 | The ``hydromt_wflow.components`` module defines reusable data container classes 10 | that represent configuration, static maps, states, outputs, and other model data. 11 | 12 | Each component exposes a ``data`` attribute, which holds the underlying model data 13 | (e.g. :class:`dict`, :class:`xarray.Dataset`, or :class:`geopandas.GeoDataFrame`), 14 | and supports a common set of I/O and manipulation methods such as 15 | :meth:`read`, :meth:`write`, and :meth:`set`. 16 | 17 | Component-level API 18 | ------------------- 19 | 20 | The table below summarizes the important methods and attributes for each component. 21 | These allow for fine-grained reading, writing, modification, and inspection of component data. 22 | They are particularly useful when working interactively in Python, for example when updating 23 | specific configuration parameters, clipping static maps, or inspecting the forcing data. 24 | 25 | 26 | .. autosummary:: 27 | :toctree: _generated 28 | :nosignatures: 29 | :template: component-class.rst 30 | 31 | WflowConfigComponent 32 | WflowStaticmapsComponent 33 | WflowForcingComponent 34 | WflowGeomsComponent 35 | WflowStatesComponent 36 | WflowTablesComponent 37 | WflowOutputGridComponent 38 | WflowOutputScalarComponent 39 | WflowOutputCsvComponent 40 | -------------------------------------------------------------------------------- /hydromt_wflow/data/lulc/v0.8/esa_worldcover_mapping.csv: -------------------------------------------------------------------------------- 1 | esa,description,landuse,vegetation_kext,land_manning_n,soil_compacted_fraction,vegetation_root_depth,vegetation_leaf_storage,vegetation_wood_storage,land_water_fraction,vegetation_crop_factor,vegetation_feddes_alpha_h1,vegetation_feddes_h1,vegetation_feddes_h2,vegetation_feddes_h3_high,vegetation_feddes_h3_low,vegetation_feddes_h4,erosion_usle_c,Cov_River 2 | 10,Tree cover,10,0.8,0.5,0,369,0.0477,0.5,0,0.85,1,0,-100,-400,-1000,-15849,0.0069,12.3 3 | 20,Shrubland,20,0.07,0.5,0,410,0.07,0.1,0,0.8,1,0,-100,-400,-1000,-15849,0.05,1.97 4 | 30,Grassland,30,0.6,0.15,0,106.8,0.1272,0,0,0.75,1,0,-100,-400,-1000,-15849,0.045,1.97 5 | 40,Cropland,40,0.6,0.2,0,390.4,0.1272,0,0,1.15,0,0,-100,-400,-1000,-15849,0.3,1.97 6 | 50,Built-up,50,0.7,0.011,0.9,257.4,0.04,0.01,0,1,1,0,-100,-400,-1000,-15849,0,1 7 | 60,Bare / sparse vegetation,60,0.6,0.02,0,10.7,0.04,0.04,0,1,1,0,-100,-400,-1000,-15849,0.25,1.97 8 | 70,Snow and Ice,70,0.6,0.01,0,0,0,0,0,1,1,0,-100,-400,-1000,-15849,0,1 9 | 80,Permanent water bodies,80,0.7,0.01,0,0,0,0,1,1,1,0,-100,-400,-1000,-15849,0,1 10 | 90,Herbaceous wetland,90,0.6,0.15,0,106.8,0.1272,0,0,1.1,1,0,-100,-400,-1000,-15849,0.05,1.97 11 | 95,Mangroves,95,0.8,0.5,0,369,0.0477,0.5,0.5,1,1,0,-100,-400,-1000,-15849,0.0069,12.3 12 | 100,Moss and lichen,100,0.6,0.085,0,136.9,0.04,0,0,1,1,0,-100,-400,-1000,-15849,0.04,1.97 13 | 0,No data,0,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999,-999 14 | -------------------------------------------------------------------------------- /docs/user_guide/2_sbm_model/4_clip.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow 2 | .. _wflow_clip: 3 | 4 | Clipping a model 5 | ---------------- 6 | This plugin allows to clip the following parts of an existing model for a smaller region from command line: 7 | 8 | - staticmaps 9 | - forcing 10 | - states 11 | - geoms 12 | - config (update reservoir settings) 13 | - tables (update reservoir rating curves) 14 | 15 | To clip a smaller model from an existing one use the ``update`` CLI command with the **clip** method: 16 | 17 | .. code-block:: console 18 | 19 | activate hydromt_wflow 20 | hydromt update wflow_sbm path/to/model_to_clip -o path/to/clipped_model -i clip_config.yml -v 21 | 22 | Here is an example of the clip config: 23 | 24 | .. code-block:: yaml 25 | 26 | steps: 27 | - clip: 28 | region: {"basin": [x, y]} # region to clip the model too 29 | inverse_clip: false # whether to clip outside or inside the region 30 | clip_states: true # whether to clip states 31 | clip_forcing: true # whether to clip forcing 32 | 33 | As for building, the recommended `region options `_ 34 | for a proper implementation of the clipped model are: 35 | 36 | - basin 37 | - subbasin 38 | 39 | See the following model API: 40 | 41 | * :py:func:`~WflowSbmModel.clip` 42 | 43 | 44 | Examples 45 | -------- 46 | To know more about clipping a Wflow-SBM model, check the following example: 47 | 48 | - :ref:`Clipping a Wflow SBM model ` 49 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/documentation_improvement.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | name: Documentation Improvement 3 | description: Report wrong or missing documentation 4 | labels: [documentation, needs refinement] 5 | 6 | body: 7 | - type: checkboxes 8 | attributes: 9 | label: HydroMT-Wflow version checks 10 | options: 11 | - label: > 12 | I have checked that the issue still exists on the latest versions of the docs 13 | on `main` [here](https://github.com/Deltares/hydromt_wflow) 14 | required: true 15 | - type: dropdown 16 | id: kind 17 | attributes: 18 | description: What kind of documentation issue is this? 19 | label: Kind of issue 20 | options: 21 | - Docs are wrong 22 | - Docs are unclear 23 | - Docs are missing 24 | validations: 25 | required: true 26 | - type: textarea 27 | id: location 28 | attributes: 29 | description: > 30 | If the docs are wrong or unclear please provide the URL of the documentation in question 31 | label: Location of the documentation 32 | - type: textarea 33 | id: problem 34 | attributes: 35 | description: > 36 | Please provide a description of the documentation problem 37 | label: Documentation problem 38 | validations: 39 | required: true 40 | - type: textarea 41 | id: suggested-fix 42 | attributes: 43 | description: > 44 | Please explain your suggested fix and why it's better than the existing documentation 45 | label: Suggested fix for documentation 46 | -------------------------------------------------------------------------------- /docs/api/advanced/base-model.rst: -------------------------------------------------------------------------------- 1 | .. currentmodule:: hydromt_wflow 2 | 3 | .. _api_base_model: 4 | 5 | ============== 6 | WflowBaseModel 7 | ============== 8 | 9 | The ``WflowBaseModel`` class provides core methods and components shared by all Wflow models. 10 | 11 | .. autosummary:: 12 | :toctree: _generated 13 | 14 | WflowBaseModel 15 | 16 | High level and I/O methods 17 | -------------------------- 18 | 19 | .. autosummary:: 20 | :toctree: _generated 21 | 22 | WflowBaseModel.build 23 | WflowBaseModel.update 24 | 25 | WflowBaseModel.read 26 | WflowBaseModel.write 27 | 28 | 29 | Attributes 30 | ---------- 31 | 32 | .. autosummary:: 33 | :toctree: _generated 34 | 35 | WflowBaseModel.crs 36 | WflowBaseModel.root 37 | WflowBaseModel.flwdir 38 | WflowBaseModel.basins 39 | WflowBaseModel.rivers 40 | 41 | 42 | Setup methods 43 | ------------- 44 | 45 | .. autosummary:: 46 | :toctree: _generated 47 | 48 | WflowBaseModel.setup_config 49 | WflowBaseModel.setup_config_output_timeseries 50 | WflowBaseModel.setup_basemaps 51 | WflowBaseModel.setup_rivers 52 | WflowBaseModel.setup_riverwidth 53 | WflowBaseModel.setup_lulcmaps 54 | WflowBaseModel.setup_lulcmaps_from_vector 55 | WflowBaseModel.setup_outlets 56 | WflowBaseModel.setup_gauges 57 | WflowBaseModel.setup_constant_pars 58 | WflowBaseModel.setup_grid_from_raster 59 | WflowBaseModel.setup_areamap 60 | 61 | .. autoclass:: hydromt_wflow.WflowBaseModel 62 | :members: 63 | :member-order: bysource 64 | :undoc-members: 65 | :show-inheritance: 66 | :no-index: 67 | -------------------------------------------------------------------------------- /tests/data/demand/data_catalog.yml: -------------------------------------------------------------------------------- 1 | meta: 2 | version: v2025.7 3 | name: test-demand-data 4 | hydromt_version: '>1.0a,<2' 5 | 6 | 7 | lisflood_gwbodies: 8 | data_type: RasterDataset 9 | uri: lisflood_gwbodies.tif 10 | driver: 11 | name: rasterio 12 | options: {} 13 | filesystem: 14 | protocol: local 15 | metadata: 16 | url: https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/CEMS-GLOFAS/LISFLOOD_static_and_parameter_maps_for_GloFAS/Water_demand/ 17 | crs: 4326 18 | 19 | lisflood_gwfrac: 20 | data_type: RasterDataset 21 | uri: lisflood_gwfrac.tif 22 | driver: 23 | name: rasterio 24 | options: {} 25 | filesystem: 26 | protocol: local 27 | metadata: 28 | url: https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/CEMS-GLOFAS/LISFLOOD_static_and_parameter_maps_for_GloFAS/Water_demand/ 29 | crs: 4326 30 | 31 | lisflood_ncfrac: 32 | data_type: RasterDataset 33 | uri: lisflood_ncfrac.tif 34 | driver: 35 | name: rasterio 36 | options: {} 37 | filesystem: 38 | protocol: local 39 | metadata: 40 | url: https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/CEMS-GLOFAS/LISFLOOD_static_and_parameter_maps_for_GloFAS/Water_demand/ 41 | crs: 4326 42 | 43 | lisflood_waterregions: 44 | data_type: RasterDataset 45 | uri: lisflood_waterregions.tif 46 | driver: 47 | name: rasterio 48 | options: {} 49 | filesystem: 50 | protocol: local 51 | metadata: 52 | url: https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/CEMS-GLOFAS/LISFLOOD_static_and_parameter_maps_for_GloFAS/Water_demand/ 53 | crs: 4326 54 | nodata: -9999 55 | -------------------------------------------------------------------------------- /docs/user_guide/4_pre_and_post_processing/index.rst: -------------------------------------------------------------------------------- 1 | .. _process_visualize: 2 | 3 | ======================================== 4 | Pre and postprocessing and visualization 5 | ======================================== 6 | 7 | The Hydromt-Wflow plugin provides several possibilities to postprocess and visualize the model data and model results: 8 | 9 | * :ref:`Prepare flow directions ` using the `flw methods of HydroMT `_ 10 | * :ref:`Convert static maps to mapstack ` for further processing and analysis 11 | * Plot :ref:`static maps `, :ref:`forcing ` and 12 | :ref:`results ` by means of additional python packages 13 | * Use the `statistical methods of HydroMT `_ to statistically analyze the model results 14 | * Upgrade your old Wflow model to the Wflow.jl version 1 format using the :ref:`upgrade ` example. 15 | 16 | 17 | Here are a few examples of how these methods can be used: 18 | 19 | - :ref:`Preparing flow directions from DEM ` 20 | - :ref:`Convert static maps to mapstack ` 21 | - :ref:`Plot static maps ` 22 | - :ref:`Plot forcing ` 23 | - :ref:`Plot results ` 24 | - :ref:`Upgrade to Wflow.jl version 1 ` 25 | -------------------------------------------------------------------------------- /.github/workflows/sonar.yml: -------------------------------------------------------------------------------- 1 | name: SonarQube Scan and coverage 2 | 3 | on: 4 | workflow_dispatch: 5 | push: 6 | branches: 7 | - main 8 | - v1 9 | paths: 10 | - tests/**/* 11 | - hydromt_wflow/**/* 12 | - data/**/* 13 | - pyproject.toml 14 | - pixi.lock 15 | - .github/workflows/sonar.yml 16 | - sonar-project.properties 17 | pull_request: 18 | branches: 19 | - main 20 | - v1 21 | paths: 22 | - tests/**/* 23 | - hydromt_wflow/**/* 24 | - data/**/* 25 | - pyproject.toml 26 | - pixi.lock 27 | - .github/workflows/sonar.yml 28 | - sonar-project.properties 29 | workflow_run: 30 | workflows: [Pixi auto update] 31 | types: 32 | - completed 33 | 34 | 35 | jobs: 36 | scan: 37 | defaults: 38 | run: 39 | shell: bash -e -l {0} 40 | 41 | name: run test coverage and SonarQube scan 42 | runs-on: ubuntu-latest 43 | steps: 44 | - name: Checkout the code 45 | uses: actions/checkout@v6 46 | with: 47 | fetch-depth: 0 48 | - name: Setup Pixi 49 | uses: prefix-dev/setup-pixi@v0.9.3 50 | with: 51 | pixi-version: "v0.59.0" 52 | - name: Run the test suite 53 | uses: nick-fields/retry@v3 54 | with: 55 | timeout_minutes: 10 56 | max_attempts: 3 57 | command: | 58 | pixi run --locked -e test-full-py311 test-cov 59 | - name: SonarQube Scan 60 | uses: SonarSource/sonarqube-scan-action@v6 61 | env: 62 | SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} 63 | -------------------------------------------------------------------------------- /examples/wflow_update_water_demand.yml: -------------------------------------------------------------------------------- 1 | steps: 2 | - setup_allocation_areas: 3 | waterareas_fn: gadm_level2 4 | priority_basins: True 5 | output_name: allocation_areas_admin2 6 | 7 | - setup_allocation_surfacewaterfrac: 8 | gwfrac_fn: lisflood_gwfrac 9 | gwbodies_fn: lisflood_gwbodies 10 | ncfrac_fn: lisflood_ncfrac 11 | 12 | # Update model with GLCNMO landuse data in order to add the paddies 13 | - setup_lulcmaps_with_paddy: 14 | lulc_fn: glcnmo 15 | paddy_class: 12 16 | soil_fn: soilgrids 17 | wflow_thicknesslayers: 18 | - 50 19 | - 100 20 | - 50 21 | - 200 22 | - 800 23 | target_conductivity: 24 | - null 25 | - null 26 | - 5 27 | - null 28 | - null 29 | paddy_waterlevels: 30 | "demand_paddy_h_min": 20 31 | "demand_paddy_h_opt": 50 32 | "demand_paddy_h_max": 80 33 | 34 | - setup_domestic_demand: 35 | domestic_fn: pcr_globwb 36 | population_fn: ghs_pop_2015 37 | domestic_fn_original_res: 0.5 38 | 39 | - setup_other_demand: 40 | demand_fn: pcr_globwb 41 | variables: 42 | - industry_gross 43 | - industry_net 44 | - livestock_gross 45 | - livestock_net 46 | resampling_method: nearest 47 | 48 | - setup_irrigation: 49 | irrigated_area_fn: irrigated_area 50 | irrigation_value: 51 | - 1 52 | cropland_class: 53 | - 11 54 | - 14 55 | - 20 56 | - 30 57 | paddy_class: 58 | - 12 59 | area_threshold: 0.6 60 | lai_threshold: 0.2 61 | lulcmap_name: meta_landuse 62 | -------------------------------------------------------------------------------- /.github/workflows/lock.yml: -------------------------------------------------------------------------------- 1 | name: Update lockfile 2 | 3 | permissions: 4 | contents: write 5 | pull-requests: write 6 | 7 | on: 8 | workflow_dispatch: 9 | schedule: 10 | - cron: 0 5 1 * * # First of every month 11 | 12 | jobs: 13 | pixi-update: 14 | defaults: 15 | run: 16 | shell: bash -e -l {0} 17 | timeout-minutes: 30 18 | 19 | strategy: 20 | fail-fast: false 21 | matrix: 22 | os: ["ubuntu-latest"] 23 | include: 24 | - os: ubuntu-latest 25 | label: linux-64 26 | 27 | name: ${{ matrix.label }} 28 | runs-on: ${{ matrix.os }} 29 | 30 | steps: 31 | - name: Checkout code 32 | uses: actions/checkout@v6 33 | 34 | - name: Set up pixi 35 | uses: prefix-dev/setup-pixi@v0.9.3 36 | with: 37 | pixi-version: "v0.59.0" 38 | run-install: false 39 | 40 | - name: Update lockfile 41 | run: | 42 | set -o pipefail 43 | pixi update --json | pixi exec pixi-diff-to-markdown >> diff.md 44 | 45 | - name: Update SBOM 46 | run: | 47 | set -o pipefail 48 | pixi run --locked generate-sbom 49 | 50 | - name: Create pull request 51 | uses: peter-evans/create-pull-request@v8 52 | with: 53 | token: ${{ secrets.GITHUB_TOKEN }} 54 | commit-message: Update pixi lockfile and SBOM 55 | title: Update pixi lockfile and SBOM 56 | body-path: diff.md 57 | branch: update-pixi 58 | base: main 59 | labels: pixi 60 | delete-branch: true 61 | add-paths: | 62 | pixi.lock 63 | hydromt-wflow-sbom.json 64 | -------------------------------------------------------------------------------- /examples/wflow_update_forcing.yml: -------------------------------------------------------------------------------- 1 | steps: 2 | - setup_config: # options parsed to wflow toml file
.