Metadata-Version: 2.1 Name: HAPI-Nile Version: 1.6.0 Summary: Distributed hydrological-model Home-page: https://github.com/MAfarrag/Hapi Author: Mostafa Farrag Author-email: moah.farag@gmail.come License: GNU General Public License v3 Keywords: Hydrology,Distributed hydrological model,Hydaulic model Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Console Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3) Classifier: Natural Language :: English Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Topic :: Scientific/Engineering :: Hydrology Classifier: Topic :: Scientific/Engineering :: GIS Classifier: Intended Audience :: Science/Research Classifier: Intended Audience :: Developers Description-Content-Type: text/markdown License-File: LICENSE.md License-File: AUTHORS.rst Requires-Dist: cleopatra (>=0.2.7) Requires-Dist: digitalearth (>=0.1.11) Requires-Dist: earth2observe (>=0.2.2) Requires-Dist: Fiona (>=1.8.21) Requires-Dist: gdal (>=3.5.3) Requires-Dist: geopandas (>=0.12.2) Requires-Dist: geostatista (>=0.1.6) Requires-Dist: joblib (>=1.2.0) Requires-Dist: loguru (>=0.6.0) Requires-Dist: matplotlib (>=3.6.3) Requires-Dist: numpy (>=1.24.1) Requires-Dist: Oasis-Optimization (>=1.0.2) Requires-Dist: pandas (>=1.4.4) Requires-Dist: pathlib (>=1.0.1) Requires-Dist: pip (>=22.3.1) Requires-Dist: pyramids-gis (>=0.3.2) Requires-Dist: PyYAML (>=0.6.0) Requires-Dist: rasterio (>=1.3.2) Requires-Dist: rasterstats (>=0.17.0) Requires-Dist: requests (>=2.28.1) Requires-Dist: scipy (>=1.9.1) Requires-Dist: serapeum-utils (>=0.1.1) Requires-Dist: statista (>=0.1.8) Requires-Dist: statsmodels (>=0.13.2) ![GitHub release (latest by date)](https://img.shields.io/github/v/release/mafarrag/hapi) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5758979.svg)](https://doi.org/10.5281/zenodo.5758979) [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/MAfarrag/HAPI/master) [![Python Versions](https://img.shields.io/pypi/pyversions/HAPI-Nile.png)](https://img.shields.io/pypi/pyversions/HAPI-Nile) [![Documentation Status](https://readthedocs.org/projects/hapi-hm/badge/?version=latest)](https://hapi-hm.readthedocs.io/en/latest/?badge=latest) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit) [![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/MAfarrag/Hapi.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/MAfarrag/Hapi/context:python) [![GitHub Clones](https://img.shields.io/badge/dynamic/json?color=success&label=Clone&query=count&url=https://github.com/MAfarrag/Hapi/blob/master/clone.json?raw=True&logo=github)](https://github.com/MShawon/github-clone-count-badge) [![Say Thanks!](https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg)](https://saythanks.io/to/MAfarrag) Current build status ====================
All platforms:
[![Build status](https://ci.appveyor.com/api/projects/status/rys2u0l1nbmfjuww?svg=true)](https://ci.appveyor.com/project/MAfarrag/hapi) [![codecov](https://codecov.io/gh/Serapieum-of-alex/Hapi/branch/main/graph/badge.svg?token=EMQSR7K2YV)](https://codecov.io/gh/Serapieum-of-alex/Hapi) ![GitHub last commit](https://img.shields.io/github/last-commit/MAfarrag/Hapi) ![GitHub forks](https://img.shields.io/github/forks/MAfarrag/hapi?style=social) ![GitHub Repo stars](https://img.shields.io/github/stars/MAfarrag/Hapi?style=social) ![AppVeyor tests (branch)](https://img.shields.io/appveyor/tests/MAfarrag/Ha%5Bi/hydraulic-model) [![Github all releases](https://img.shields.io/github/downloads/Naereen/StrapDown.js/total.svg)](https://GitHub.com/Naereen/StrapDown.js/releases/) ![Profile views](https://gpvc.arturio.dev/MAfarrag) Current release info ==================== | Name | Downloads | Version | Platforms | | --- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- | --- | | [![Conda Recipe](https://img.shields.io/badge/recipe-hapi-green.svg)](https://anaconda.org/conda-forge/hapi) | [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/hapi.svg)](https://anaconda.org/conda-forge/hapi) [![Downloads](https://pepy.tech/badge/hapi-nile)](https://pepy.tech/project/hapi-nile) [![Downloads](https://pepy.tech/badge/hapi-nile/month)](https://pepy.tech/project/hapi-nile) [![Downloads](https://pepy.tech/badge/hapi-nile/week)](https://pepy.tech/project/hapi-nile) ![PyPI - Downloads](https://img.shields.io/pypi/dd/hapi-nile?color=blue&style=flat-square) ![GitHub all releases](https://img.shields.io/github/downloads/MAfarrag/Hapi/total) | [![Conda Version](https://img.shields.io/conda/vn/conda-forge/hapi.svg)](https://anaconda.org/conda-forge/hapi) [![PyPI version](https://badge.fury.io/py/HAPI-Nile.svg)](https://badge.fury.io/py/HAPI-Nile) [![Anaconda-Server Badge](https://anaconda.org/conda-forge/hapi/badges/version.svg)](https://anaconda.org/conda-forge/hapi) | [![Conda Platforms](https://img.shields.io/conda/pn/conda-forge/hapi.svg)](https://anaconda.org/conda-forge/hapi) [![Join the chat at https://gitter.im/Hapi-Nile/Hapi](https://badges.gitter.im/Hapi-Nile/Hapi.svg)](https://gitter.im/Hapi-Nile/Hapi?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) | ![Hapi](/docs/img/Hapi4.png) ![Hapi](/docs/img/name.png) Hapi - Hydrological library for Python ===================================================================== **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 (Farrag & Corzo, 2021), Hapi gives a high degree of flexibility to all components of the model (spatial discretization - cell size, temporal resolution, parameterization approaches and calibration (Farrag et al., 2021)). ![1](/docs/img/Picture1.png) ![2](/docs/img/Picture2.png) Hapi 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. For using Hapi please cite Farrag et al. (2021) and Farrag & Corzo (2021) IHE-Delft sessions ------------------ - In April 14-15 we had a two days session for Masters and PhD student in IHE-Delft to explain the different modules and the distributed hydrological model in Hapi [Day 1](https://youtu.be/HbmUdN9ehSo) , [Day 2](https://youtu.be/m7kHdOFQFIY) References ------------- Farrag, M. & Corzo, G. (2021) MAfarrag/Hapi: Hapi. doi:10.5281/ZENODO.4662170 Farrag, M., Perez, G. C. & Solomatine, D. (2021) Spatio-Temporal Hydrological Model Structure and Parametrization Analysis. J. Mar. Sci. Eng. 9(5), 467. doi:10.3390/jmse9050467 [Link](https://www.researchgate.net/publication/351143581_Spatio-Temporal_Hydrological_Model_Structure_and_Parametrization_Analysis) 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 ``` ## pip to install the last release you can easly use pip ``` pip install HAPI-Nile==1.6.0 ``` Quick start =========== ``` >>> import Hapi ``` [other code samples](https://hapi-hm.readthedocs.io/en/latest/?badge=latest) ## Naming Convention [PEP8](https://peps.python.org/pep-0008/#naming-conventions) - module names: lower case word, preferably one word if not, separate words with underscores (module.py, my_module.py). - class names: PascalCase (Model, MyClass). - class method/function: CamelCase(getFile, readConfig).should have a verb one them, because they perform some action ======= History ======= 1.3.2 (2022-12-26) ------------------ * remove parameters from the package and retrieve them with the parameter package. 1.3.3 (2022-12-27) ------------------ * use joblib to parallelize reading laterals in hydraulic model 1.3.4 (2022-12-27) ------------------ * merge two function readLaterals and readRRMProgression, rename RRMProgression to routedRRM 1.3.5 (2022-12-27) ------------------ * fix pypi package names in the requirements.txt file for all internal packages * fix python version number * tests are all passing 1.4.0 (2022-12-27) ------------------ * remove fiona and the reading file exception using fion * unify reading results of rainfall-runoff model in the readRRMResults, ReadLaterals, ReadUSHydrographs * refactor code and change methods to camelcase * add hydrodynamic model 1d config file read function * simplify functions with too many parameters using decorator * add automatic pypi build and publish github actions 1.5.0 (2023-01-10) ------------------ * hydraulic model can read chunked big zip file * fix CI * fix missing module (saint venant script and module) 1.6.0 (2023-02-03) ------------------ * all attributes follows snake case naming convention * refactor all modules with pre-commit * add smoothDikeLevel, getReach and updateReach * bump up denpendencies versions * move un-necessary functions to serapeum-utils