Skip to main content

Lisflood OS

This repository hosts source code of LISFLOOD Calibration tool. Go to Lisflood OS page for more information.

Other useful resources

Project Documentation Source code
Lisflood Model docs https://github.com/ec-jrc/lisflood-code
User guide
Lisvap Docs https://github.com/ec-jrc/lisflood-lisvap
Calibration tool Docs https://github.com/ec-jrc/lisflood-calibration (this repository)
Lisflood Utilities https://github.com/ec-jrc/lisflood-utilities
Lisflood Usecases https://github.com/ec-jrc/lisflood-usecases

This repository contains a collection of Python tools and libraries for calibrating the LISFLOOD hydrological model.

The calibration tools were created by Hylke Beck 2014 (JRC, Princeton). The submodule Hydrostats was created 2011 by Sat Kumar Tomer (modified by Hylke Beck). Modified by Feyera Aga Hirpa in 2015 (JRC). Modified by Valerio Lorini and Alfieri Lorenzo (JRC) in 2018. The calibration tools were completely refactored by Corentin Carton de Wiart (ECMWF) for the EFAS 5.0 and GloFAS 4.0 releases in 2023, and updated by Stefania Grimaldi and Carlo Russo (JRC) for the GloFAS 5.0 and EFAS 6.0 releases in 2026.

The calibration procedure consists of several Python scripts to be run consecutively. If needed, the tools are also available through a Python library called liscal:

import liscal

All the scripts found in the bin folder are just entry points for liscal functionalities.

Installation

You can install the calibration tools and the liscal library from GitHub:

git clone https://github.com/ec-jrc/lisflood-calibration.git
cd lisflood-calibration
pip install .

Once installed, you can run the scripts located in the bin folder or build your own workflow using the liscal library.

Calibration Workflow

The calibration worfklow is split into five main parts:

  1. Setting up the calibration and prepare the static data and station list.
  2. Filter the stations and compute the catchments dependencies graph together with some pre-processing maps (catchments masks, stations outlets, etc.). Scripts involved in this step:
    • CAL_1_FILTER_STATIONS.py: filters stations and keep those with enough observations.
    • CAL_2_HYDRO_DEPENDENCIES.py: computes the hydrological dependencies between the stations.
  3. Cut all the static maps and forcings and create one folder per catchment, named using the station ID of the station corresponding to the catchment. Best practice is to save the cutmaps outputs in a different folder than the calibration to avoid having to recompute them. Scripts involved in this step:
    • CAL_3_MASK.py: extracts the mask of the stations.
    • CAL_4_CUT_MAPS.py: cuts all the static and forcing maps from the mask computed in the previous step.
    • CAL_4b_CUT_MAPS_list.py script provides a solution to apply CAL_4_CUT_MAPS.py to loop all the catchments
  4. From these maps, calibrate the catchment with respect to the observations at the station outlet of the catchment. Scripts involved in this step:
    • CAL_5_EXTRACT_STATION.py: extracts station metadata and observation for a specified catchment.
    • Optional: CAL_5b_SET_PRERUN_IN_SETTINGS.py to set prerun date in settings file from station metadata.
    • CAL_6_CALIBRATION.py: runs the calibration for a specified catchment.
    • CAL_7_LONGTERM_RUN.py: runs the long term run for a specified catchment using the calibrated parameters.
    • Optional: CAL_8_POSTPROCESSING.py computes calibration statistics for the catchment.
    • Optional: CAL_9_DIAGNOSTICS.py computes calibration diagnostics for a list of catchments.
  5. Once all the catchments have been calibrated, we can compute the global parameter map:
    • CAL_10_PARAMETER_MAPS.py: concatenates all the catchments calibrated parameters into PCRaster parameters maps.

These scripts need to be run in sequence. Note that steps 3 and 4 are executed per catchment (or station). As the process can be heavy, it is up to the user to dispatch the workflow on the computing architecture and to make sure the upstream catchnments are run first. An example of workflow using PBS scheduling can be found in CAL_6-7_PERFORM_CAL_PBS.py.

for more details, please refer to the main documentation: https://ec-jrc.github.io/lisflood-calibration/

Metadata

Release files for liscal 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for liscal 2.0.0
File Size Uploaded
liscal-2.0.0.tar.gz 2.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for liscal 2.0.0
File Interpreter ABI Platform
liscal-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 3.0 MB

Release files / liscal-2.0.0.tar.gz

Download URL liscal-2.0.0.tar.gz
Size 2.1 MB
Tags Source
SHA-256 checksum
How to use checksums
49fb427427c440852607f141cb4eef59a5a50c6d3ddf59e97954913b1021cf93
BLAKE2b-256 checksum
How to use checksums
94a66d96572a39fd4875b9eeb76b37998f047817e82d4baffd0c4cce40c18332
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Release files / liscal-2.0.0-py3-none-any.whl

Download URL liscal-2.0.0-py3-none-any.whl
Size 876.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
11a42b0b9e989cc1362463e519dce9c1381508ea325bb69d26ac006a9cad58c8
BLAKE2b-256 checksum
How to use checksums
c184b0417a65223d80323ed6f6cf846b95fcffbb18f3ab48ed93c0e29255367e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.21

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page