Hapi is an open-source Python Framework for building raster-based conceptual distributed hydrological models using HBV96 lumped model & Muskingum routing method at a catchment scale, Hapi gives a high degree of flexibility to all components of the model (spatial discretization - cell size, temporal resolution, parameterization approaches and calibration).


Main Features

  • Modified version of HBV96 hydrological model (Bergström, 1992) with 15 parameters in case of considering
    snow processes, and 10 parameters without snow, in addition to 2 parameters of Muskingum routing method
  • Remote sensing module to download the meteorological inputs required for the hydrologic model simulation (ECMWF)
  • GIS modules to enable the modeler to fully prepare the meteorological inputs and do all the preprocessing
    needed to build the model (align rasters with the DEM), in addition to various methods to manipulate and
    convert different forms of distributed data (rasters, NetCDF, shapefiles)
  • Sensitivity analysis module based on the concept of one-at-a-time OAT and analysis of the interaction among
    model parameters using the Sobol concept ((Rusli et al., 2015)) and a visualization
  • Statistical module containing interpolation methods for generating distributed data from gauge data, some
    distribution for frequency analysis and Maximum likelihood method for distribution parameter estimation.
  • Visualization module for animating the results of the distributed model, and the meteorological inputs
  • Optimization module, for calibrating the model based on the Harmony search method

The recent version of Hapi (Hapi 1.0.1) integrates the global hydrological parameters obtained by Beck et al., (2016),
to reduce model complexity and uncertainty of parameters.

Future work

  • Developing a regionalization method for connection model parameters with some catchment characteristics for better model calibration.
  • Developing and integrate river routing method (kinematic and diffusive wave approximation)
  • Apply the model for large scale (regional/continental) cases
  • Developing a DEM processing module for generating the river network at different DEM spatial resolutions.


Beck, H. E., Dijk, A. I. J. M. van, Ad de Roo, Diego G. Miralles, T. R. M. & Jaap Schellekens, and L. A. B. (2016) Global-scale regionalization of hydrologic model parameters-Supporting materials 3599–3622. doi:10.1002/2015WR018247.Received

Bergström, S. (1992) The HBV model - its structure and applications. Smhi Rh 4(4), 35.

Rusli, S. R., Yudianto, D. & Liu, J. tao. (2015) Effects of temporal variability on HBV model calibration. Water Sci. Eng. 8(4), 291–300. Elsevier Ltd. doi:10.1016/j.wse.2015.12.002

Installing hapi

Installing hapi from the conda-forge channel can be achieved by:

conda install -c conda-forge hapi

It is possible to list all of the versions of hapi available on your platform with:

conda search hapi --channel conda-forge

Install from Github

to install the last development to time you can install the library from github

pip install git+https://github.com/MAfarrag/HAPI


to install the last release you can easly use pip

pip install HAPI-Nile

Quick start

  >>> import Hapi