Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • hru-delin hru-delin
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 6
    • Issues 6
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • hru-delin-dev
  • hru-delinhru-delin
  • Wiki
  • Home

Last edited by Veyssier Julien Jun 06, 2020
Page history
This is an old version of this page. You can view the most recent version or browse the history.

Home

  • HRU delin next gen
  • Differences with HRU delin v5
  • Windows
  • Install
    • Dependencies
    • HRU delin
  • Usage
    • Basic
    • Intermediate
      • Multiple config files for one dataset
      • Start a run from partial results
    • Advanced
      • Working directory
      • Number of parallel process
      • Multiple executions
  • CircleKill

HRU delin next gen

HRU delin used to work with grass6 only. This version brings compatibility with grass7 (and looses compatibility with grass6).

This repository contains hru-delin core (full Python3 and portable) and command line launch scripts (GNU/Linux only).

Differences with HRU delin v5

  • Grass7 compatibility
  • Parallelized process in step2, step3 and step4
  • ZirkelKill ported to Python3, no more Java dependency
  • Launch scripts now accept an optional parameter to specify where to find the config file (with any name)
  • Advanced progression display
  • Automatic grass environment building, no more need to build a "case"
  • Flexibility in config file values path (accepts relative and absolute path)
  • Flexibility in user location when running launch scripts
  • New launch script to run all steps
  • No more system calls (to awk, grep, sed...) -> code is now full Python3 and portable to Windows
  • Use pipes between grass tools to avoid some hard disk access (avoid writing some intermediate files)

Windows

It is technically possible to run it on Windows but there isn't any launch script. Launch scripts are written in BASH which is no installed on Windows by default.

It may be easy to write launch script in Windows batch or something else working on Windows but then it's not very easy to install hru-delin dependencies on Windows.

To use hru-delin on Windows, you can install the all-in-one hru-delin QGIS plugin. QGIS comes with all modules that are required to run hru-delin.

Install

Dependencies

You'll need some Python3 modules to be able to run HRU delin.

  • TQDM: display progress
  • Pandas: read/write tabular files and perform some computations
  • dbf: write dbf versions of hru.par and reach.par

On Debian/Ubuntu/Mint/... you can install those with your package manager like that:

sudo apt install python3-pandas python3-dbf python3-tqdm

If you don't have administrator rights but still have pip3 installed:

pip3 install --user pandas dbf tqdm

HRU delin

Installing hru-delin on your machine is pretty simple. There is no need to install it on the system.

Get the release archive and extract it somewhere. Then make sure the bin directory is in your PATH environment variable. Here is an example procedure:

# go to your home directory
cd
# extract the archive (adapt the path to the archive)
tar xvf Downloads/hru-delin-v7.tar.bz2
# add bin directory to your PATH variable
cd hru-delin
echo 'export PATH='`pwd`/bin':$PATH' >> ~/.bashrc

That's it! From now on, every new terminal will be able to run HRU delin. To check if everything is fine, open a new terminal and type

which hru-delin_step1.sh

It should display something like /home/myname/hru-delin/bin/hru-delin_step1.sh. If not, there's something wrong.

Usage

Basic

Create a config file (.cfg) the same way you did with HRU delin v5 and previous versions. You can name it as you wish.

If you are in the same directory than the config file and its name is my_hrudelin_project.cfg, you can run:

hru-delin_step1.sh my_hrudelin_project.cfg
hru-delin_step2.sh my_hrudelin_project.cfg
hru-delin_step3.sh my_hrudelin_project.cfg
hru-delin_step4.sh my_hrudelin_project.cfg

to launch each HRU delin step.

You can also do it with:

hru-delin_all-steps.sh my_hrudelin_project.cfg

If you name your config file hrudelin_config.cfg, and you're placed in the same directory, you can call HRU delin scripts without arguments:

hru-delin_all-steps.sh

Intermediate

Multiple config files for one dataset

If you want to try multiple options and configuration for the same dataset, there is no need to duplicate the data set (specially if it's big). You can write multiple .cfg files that use this dataset.

Be carefull to write the results in different places/directories to make sure you don't loose track of what is produced by your different runs.

Start a run from partial results

If someone successfully ran step1 and step2 but wants to run step3 and step4 on another machine because it requires more CPU power, it is perfectly possible. The only directory that one needs to copy with the dataset is the intermediate results directory.

[dir_out]
files:my_intermediate_results

No need to copy grass_db and tmp directories.

On the destination machine, just run step3 and it will use intermediate results.

Advanced

Working directory

You don't need to be in the same directory than the config file, so you can run things like:

hru-delin_all-steps.sh ./projects/hydro/my_hrudelin_project.cfg

and HRU delin will run just fine, producing outputs next to the config file.

Number of parallel process

You can set the number of parallel process with -p option in all launch scripts. HRU delin will use the number of cores by default. You might want to use a smaller number to avoid using all your computer's resources.

Examples:

# run all steps with 2 parallel processes
hru-delin_all-steps.sh my_hrudelin_project.cfg -p 2
# run step4 with 8 parallel processes
hru-delin_step4.sh my_hrudelin_project.cfg -p 8

Multiple executions

As HRU delin builds a specific grass environment each time it is launched, you can run it multiple times simultaneously. Each HRU delin running instance won't mess with the others.

For example, let's consider you have 8 cores and you want HRU delin to only use half of your processor's resources:

# in one terminal
hru-delin_all-steps.sh projects/rhone/rhone.cfg -p 2
# and in another one
hru-delin_all-steps.sh projects/danube/danube.cfg -p 2

This way you'll have one HRU delin using 2 cores and another one using 2 cores as well.

CircleKill

ZirkelKill (Java) has been translated to Python3. It is included as a module and used by HRU delin.

You can also use it as a standalone program if you want. It can be called like a binary and takes 2 arguments:

  • the input path (.par file)
  • the output path prefix

Example:

/path/to/hru-delin/modules/circleKill.py myFile.par fixedFile

This will write fixedFile.par and fixedFile.dbf.

Clone repository
  • Home