Le coin du développeur
Utilisation en ligne de commande
Avec un terminal (CLI)
En travaux ..
Dans un terminal Windows, tapez : 'habby.exe' ou 'python.exe habby.py' suivis de la commande souhaitée.
- LIST_COMMAND : liste toutes commandes disponibles ;
- CREATE_PROJECT : création d'un projet ;
- CREATE_HYD : création d'un fichier hydraulique .hyd ;
- CREATE_SUB : création d'un fichier substrat .sub ;
- MERGE_GRID_SUB : création d'un fichier habitat .hab ;
- RUN_HABITAT : calcul des valeurs d'habitat à partir d'un fichier .hab ;
- RUN_HS : calcul l'hydrosginature d'un fichier .hyd ou .hab ;
- EXPORT : lancer les exports à partir d'un fichier .hyd ou .hab ;
- RUN_ESTIMHAB : lance le calcul Estimhab ;
- RUN_STATHAB : lance le calcul Stathab ;
- RUN_FSTRESS : lance le calcul FStress.
Lien vers la doc sphinx
Quelques exemples :
CREATE_PROJECT path_prj=C:\Users\user.name\Documents\HABBY_projects\DefaultProj_CLI
CREATE_HYD model=TELEMAC inputfile="input_file.txt" cut=True outputfilename=cli_test.hyd path_prj=C:\Users\user.name\Documents\HABBY_projects\DefaultProj_CLI CREATE_HYD model=TELEMAC inputfile="input_file.slf" unit_list=5400.0,7200.0 cut=True outputfilename=cli_test.hyd outputfilename=input_file_spe.hyd path_prj=C:\Users\user.name\Document\HABBY_projects\DefaultProj_CLI
CREATE_SUB substrate_mapping_method=polygon inputfile=sub_durance_PolygonCemagrefPercent_gpkg\sub_durance_PolygonCemagrefPercent_gpkg.gpkg path_prj=C:\Users\user.name\Document\HABBY_projects\DefaultProj_CLI
MERGE_GRID_SUB hyd=input_file_spe.hyd sub=sub_durance_PolygonCemagrefPercent_gpkg\sub_durance_PolygonCemagrefPercent_gpkg.sub outputfilename=a1_a5_a9_sub_durance_PolygonCemagrefPercent_gpkg.hab path_prj=C:\Users\user.name\Document\HABBY_projects\DefaultProj_CLI
RUN_HABITAT hab=a1_a5_a9_sub_durance_PolygonCemagrefPercent_gpkg.hab pref_file_list=biology\models\ABL01.xml,biology\models\ABL01.xml,biology\models\ABL01.xml,biology\models\BAM01b.xml,biology\models\BAM01b.xml,biology\models\BAM01b.xml,biology\models\BAM01.xml,biology\models\BAM01.xml,biology\models\BAM01.xml stage_list=adult,fry,juvenile,[0,45[,[120,270[,[45,120[,adult,fry,juvenile hyd_opt=HV,HV,HV,HV,HV,HV,HV,HV,HV sub_opt=Dominant,Dominant,Dominant,Coarser,Coarser,Coarser,Coarser,Coarser,Coarser path_prj=C:\Users\user.name\Document\HABBY_projects\DefaultProj_CLI
RUN_ESTIMHAB 0.09 1.5 9.26 12.42 0.23 0.37 1.5 0.04 1.2,2.6,0.1 path_prj="C:\Users\user.name\Documents\HABBY_projects\DefaultProj_CLI" RUN_ESTIMHAB 0.09 1.5 9.26 12.42 0.23 0.37 1.5 0.04 "...\discharge_chronicle_date.txt" path_prj="C:\Users\user.name\Documents\HABBY_projects\DefaultProj_CLI"
Avec Python
En travaux ..
Lien vers docstring Sphinx
Collaboration au développement d'HABBY
Participer au développement Python d'HABBY
Préambule
Vous pouvez soumettre des demandes de modifications du code Python sur le projet HABBY https://github.com/YannIrstea/habby:
- Si vous souhaitez de nouvelles fonctionnalités.
- Si vous avez trouvé un bug et l’avez corrigé vous-même.
Création d'un environnement Python
Dépendances
Le projet Python HABBY est hébergé sur Github accessible au lien suivant : https://github.com/YannIrstea/habby.
- Python >= 3
- Git
Aide à la création de l'environnement Python pour Windows
- Installer les dépendances.
- Télécharger la wheele GDAL : https://github.com/cgohlke/geospatial-wheels
- Installer Microsoft Visual C++ 14.0 : https://visualstudio.microsoft.com/fr/visual-cpp-build-tools/ si besoin
- Ouvrez le fichier 'creation_env_habby.bat' et spécifiez :
- le chemin d'accès à votre Python système en remplaçant le chemin de la variable : 'python_source_path=' ;
- le chemin d'accès à votre la wheel GDAL que vous avez préalablement téléchargée en remplaçant le chemin de la variable : 'gdal_wheel_path=' ;
- sauvegardez le fichier.
- Lancer le fichier 'creation_env_habby.bat'.
- Si toutes les étapes se sont bien déroulées, vous devriez voir apparaitre la fenêtre principale d'HABBY.
- Votre environnement virtuel Python pour HABBY est prêt.
Aide à la création de l'environnement Python pour Linux
- installation de GDAL for Linux and GDAL for Python (https://mothergeo-py.readthedocs.io/en/latest/development/how-to/gdal-ubuntu-pkg.html)
sudo apt-get install python3.6-dev sudo add-apt-repository ppa:ubuntugis/ppa sudo apt-get update sudo apt-get install gdal-bin ogrinfo --version sudo apt-get install libgdal-dev
- Lancer le fichier 'tips\virtual_envs\creation_env_habby_pip.sh'.
pip3 install pip --upgrade pip3 install virtualenv cd ../habby_dev virtualenv --python /usr/bin/python3.6 env_virtuels/env_habby_dev_pip source env_virtuels/env_habby_dev_pip/bin/activate pip3 install gdal==X.X.X --global-option=build_ext --global-option="-I/usr/include/gdal/" pip3 install -r habby/requirements.txt python habby/habby.py
Structure du projet Python
Préambule
Le projet Python HABBY contient les fichiers suivants :
Astuces
Réactivation des 'print'
Dans certaines fonctions lancées en multiprocessing la fonction 'print' est modifiée pour renvoyer les warnings et erreurs au processus principale.
Pour la remettre par défaut cette fonction 'print' lors d'un débogage par exemple, utilisez le code suivant :
sys.stdout = sys.__stdout__ # import sys
Réactivation du débogage pour les sous-process en QThread
RecursionError: maximum recursion depth exceeded while calling a Python object
Si vous apercevez cette erreur, c'est que vous souhaitez débogager dans un sous-process en QThread.
Pour palier à cette erreur il faut renommer temporairement le nom de la méthode “run” de la classe “MyProcessManager” du fichier “src/process_manager_mod.py” par le nom “start”.
Utilisation de GIT
- Configuration nom ou ID Github :
git config --global user.name "John Doe"
- Configuration adresse mail ou adresse mail du compte Github :
git config --global user.email johndoe@example.com
- Clonage du projet Github en local :
git clone https://github.com/YannIrstea/habby
- Clonage du projet Github en local avec autoritsation de modification sur Github :
git clone https://<TOKEN KEY>@github.com/YannIrstea/habby.git
- Unordered List ItemQuelques exemples:
git status : connaitre l'état actuel du projet git checkout dev1 : changer de branche vers la branche 'dev1' du projet git checkout master : changer de branche pour revenir à la branche master du projet git pull : mettre à jour le projet local avec les dernières modifications disponible sur Github git gui : ouvrir l'interface graphique de git pour réaliser les 'commits' git push : mettre à jour le projet sur Github avec les dernières modifications du projet en local (nécessite une autorisation avec une clef TOKEN)
Traduction du logiciel
Prés-requis
- Linguist.exe : (https://github.com/thurask/Qt-Linguist/releases)
- environnement Python HABBY avec PyQt5
Utilisation dans le code
Traduire des champs dans des classes Qt
self.tr(‘string to translate’)
Traduire des champs en dehors des classes Qt
Si pas de classe ou heritage de classe qui pose problème :
from PyQt5.QtCore import QCoreApplication text = QCoreApplication.translate(‘Input’, ‘string to translate’) # ‘Input’ sera le nom de la ‘fausse’ classe dans QLinguist et ‘Neglect’ le string à traduire.
Ou
app = QApplication(sys.argv) languageTranslator = QTranslator(app) if language == 0: input_file_translation = 'Zen_EN' languageTranslator.load(input_file_translation, os.path.join(os.getcwd(), 'translation')) if language == 1: input_file_translation = 'Zen_FR' languageTranslator.load(input_file_translation, os.path.join(os.getcwd(), 'translation')) elif language == 2: input_file_translation = 'Zen_ES' languageTranslator.load(input_file_translation, os.path.join(os.getcwd(), 'translation')) app.installTranslator(languageTranslator) app.translate(‘Input’, ‘string to translate’)
Mise à jour des fichiers .ts à traduire dans HABBY
- Vérifier que le fichier ‘habby_trans.pro’ contient bien les fichier.py contenant les champs à traduire
- Pour mettre à jour les fichiers, lancer dans l’environnement virtuel et dans le repertoire ‘habby’, lancer la commande :
python -m PyQt5.pylupdate_main habby_trans.pro
- Ouvrir le fichier de langue souhaité (ex :‘Zen_FR.ts’) dans le répertoire ‘translation’ avec Linguist.exe
- Dans le logiciel Linguist, renseigner les champs ‘French translation’ souhaités ;
- Sauvegarder le fichier ;
- Lancer l’invite de commande dans ‘habby’
- Mettre à jour le fichier de langage choisi en lançant la commande (ici pour le fichier français) :
C:\habby_dev\dependence\linguist_5.13.2\lrelease.exe translation/Zen_FR.ts
- Relancer HABBY
Création d'un executable HABBY
Windows
Pre-requis
- Librairie pyinstaller installée dans l'environnement Python
- Installer Inno Script Studio à partir de ce lien https://www.kymoto.org/products/inno-script-studio/downloads
- Installer Inno Setup à partir de ce lien https://jrsoftware.org/isdl.php
Step-by-step
pyinstaller tips/executables/habby.spec --distpath=build/pyinstaller --workpath=build/pyinstaller/temp robocopy biology build/pyinstaller/habby/biology /E > nul robocopy doc build/pyinstaller/habby/doc /E > nul robocopy model_hydro build/pyinstaller/habby/model_hydro /E > nul robocopy translation build/pyinstaller/habby/translation /E > nul robocopy file_dep build/pyinstaller/habby/file_dep /E > nul :: setup file start "" /w "C:\Program Files (x86)\Inno Script Studio\isstudio.exe" -compile tips\executables\setup_from_pyinstaller.iss
Linux
pyinstaller tips/executables/habby.spec --distpath=build/pyinstaller --workpath=build/pyinstaller/temp cp -r biology build/pyinstaller/habby/biology cp -r doc build/pyinstaller/habby/doc cp -r model_hydro build/pyinstaller/habby/model_hydro cp -r translation build/pyinstaller/habby/translation cp -r file_dep build/pyinstaller/habby/file_dep :: zip file zip -r build/pyinstaller/habby.zip build/pyinstaller/habby
Mac
Changer et publier la nouvelle version d'HABBY
Numérotation et fonctionnement
La numérotation de la version du logiciel est de type versionnage sémantique X.Y.Z (ex: HABBY v1.1.1)
- X : Changements non rétrocompatibles. Obligatoire de re-création des anciens projets HABBY.
- Y : Ajouts de fonctionnalités rétrocompatibles. Proposition de re-création des anciens projets HABBY.
- Z : Corrections d’anomalies rétrocompatibles.
Étape par étape
Par exemple HABBY v1.1.1 ⇒ HABBY v1.2.0 :
- fichier 'habby.py', ligne 27, changer la valeur X.Y.Z de la variable 'HABBY_VERSION_STR' ('1.1.1' ⇒ '1.2.0')
- fichier 'tips\executables\setup_from_pyinstaller.iss', ligne 5, changer la valeur X.Y.Z de la variable 'MyAppVersion' ('1.1.1' ⇒ '1.2.0')
- Commiter et pusher les modifications de code
- Compiler les exécutables et installeurs des différents systèmes d'exploitation
- Uploader les exécutables et changer le numéro de version X.Y.Z sur la page de téléchargement du wiki ('1.1.1' ⇒ '1.2.0')
- Ajouter un tag de release sur 'https://github.com/YannIrstea/habby/tags' ('1.1.1' ⇒ '1.2.0')
Participer à la documentation d'HABBY
Technologie DokuWiki
Ce site internet est réalisé avec DokuWiki : https://www.dokuwiki.org
La syntaxe DokuWiki est la suivante : https://www.dokuwiki.org/fr:wiki:syntax
Syntaxe Dokuwiki HABBY
Pour se référer aux instructions concernant l'interface d'HABBY, la syntaxe est la suivante :
- Menu - Sous-menu <hi #47B5E6>**Menu - Sous-menu**</hi>
- Affichage interface <hi #9BFFFF>**Affichage interface**</hi>
- 'Valeur renseignée' //'Valeur renseignée'//
- [Bouton] <hi #9BFFFF>**[Bouton]**</hi>
- [Bouton principal] <hi #47B5E6>**[Bouton principal]**</hi>
- En travaux .. FIXME En travaux .. FIXME
Création de page
- Créer un nouveau lien dans la table des matière de la page https://habby.wiki.inrae.fr/fr:start (ou https://habby.wiki.inrae.fr/en:start pour la version anglaise)
- Créer cette nouvelle page en cliquant sur le nouveau lien de la table des matières (surligné en rouge quand la page n'existe pas)
- Si la page créée se trouve dans un répertoire (de plusieurs pages) et pour conserver un ordre d'affichage, ajouter à la fin, avec N le numéro de la page (N), par ex '0' :
{{indexmenu_n>N}}
- Pour créer une page (représentant un répertoire) qui affiche le contenu de toute les pages du répertoire dans le bon ordre, créer la puis ajouter avec path, le chemin de la page, par ex 'fr:guide_utilisateur' :
{{namespace>path&order=indexmenu}}
Afficher une page existant sur la page actuelle
{{page>fr:manuel_reference:modeles_2d:sub_description:sub_carto&noheader}}
Fonctionnement d'HABBY
Calcul d'habitat à partir de modèle 2D
Les modèles hydrauliques
Introduction
Description du fichier indexHYDRAU.txt
Logiciels de modélisation hydraulique
TELEMAC
Pour rappel :
Site web | www.opentelemac.org |
---|---|
Extension(s) de fichier | .res, .slf, .srf |
Nombre de dimension | 2 |
Nombre de tronçon | n (Un fichier TELEMAC ne comporte qu’un seul tronçon) |
Unité(s) de temps | s (secondes) |
Équation | BSV (Barré de Saint-Venant) |
Méthode d'analyse numérique | Éléments finis |
Maillage variable | Non (les coordonnées XY des nœuds ne varient pas en fonction des pas de temps (maillage fixe) |
Variation de la donnée altimétrique z possible | Oui |
Variable(s) aux mailles | - |
Autre(s) variable(s) exploitables(s) aux mailles | - |
Variable(s) aux nœuds | z, h, v |
Autre(s) variable(s) exploitables(s) aux nœuds | vx, vy, température, vitesse de friction |
Nombre de point par maille | 3 |
Sens de rotation des mailles | horaire |
Condition(s) de simulation | permanent, transitoire |
Détection des variables à partir des noms :
HABBY | variables aux mailles | variables aux nœuds |
---|---|---|
z | - | BOTTOM, FOND |
h | - | WATER DEPT, HAUTEUR D'EAU |
v | - | MEAN VELOCITY, VITESSE MOY |
v_x | - | VELOCITY U, VITESSE U |
v_y | - | VELOCITY V, VITESSE V |
v_frict | - | VITESSE DE FROT, FRICTION VEL |
temp | - | TEMP |
HEC-RAS 2D
Basement
Pour rappel :
Site web | basement.ethz.ch |
---|---|
Extension(s) de fichier | .h5 |
Nombre de dimension | 2 |
Nombre de tronçon | |
Unité(s) de temps | |
Équation | |
Méthode d'analyse numérique | Volumes finis |
Maillage variable | |
Variation de la donnée altimétrique z possible | Oui |
Variable(s) aux mailles | z, h, v |
Autre(s) variable(s) exploitables(s) aux mailles | |
Variable(s) aux nœuds | |
Autre(s) variable(s) exploitables(s) aux nœuds | |
Nombre de point par maille | |
Sens de rotation des mailles | |
Condition(s) de simulation |
HABBY | variables aux mailles | variables aux nœuds |
---|---|---|
z | BottomEl | Coordnts |
h | - | - |
v | - | - |
v_x | - | - |
v_y | - | - |
v_frict | - | - |
temp | - | - |
Calcul d'habitat à partir de modèles statistiques
A partir d'Estimhab
A partir de Stathab
A partir de FStress
Lecture d'un modèle hydraulique 1D ou 2D dans HABBY
HABBY va contrôler l'intégrité des données d'entrées hydrauliques et les modifier dans certains cas :
- Lecture des fichiers de simulation hydraulique 1D ou 2D.
- (Seulement pour les modèles 1D) Création d'un maillage triangulaire à partir des profils en travers.
- (Seulement pour les modèles 2D et maillage non triangulaire) Triangulation pour avoir un maillage triangulaire.
- (Seulement pour les modèles 2D et Volumes Finis) Conversion d'un maillage volume finis vers un maillage élément finis.
- Assemblage des tronçons et unités si plusieurs fichiers d'entrée.
- Sauvegarde du maillage complet (whole_profile).
- Détection d'un maillage variable en coordonnées XY entre chaque unité d'un même tronçon.
- Détection d'un maillage variable en élévation Z entre chaque unité d'un même tronçon.
- Pour chaque unité de chaque tronçon:
- Détection de doublons de mailles et nœuds à la lecture. Si oui, l'unité n'est pas acceptée par HABBY.
- Toute les valeurs de hauteurs d'eau inférieures au paramètre du projet spécifié par l'utilisateur, sont mise à 0. Toute les variables qui dépendent de la hauteur d'eau sont aussi mise à 0.
- Suppression des mailles sèches (hauteurs d'eau égales à 0.).
- (Seulement pour les modèles 2D avec l'option de projet activée) : Découpage des mailles semi-mouillées + détection de doublons de mailles et nœuds par sécurité.
- Calcul de l'aire de chaque maille.
- Suppression des mailles dont l'aire calculée est nulle.
- Création d'un fichier .hyd (ou .hab avec les modèles LAMMI ou ASCII).