Licorne

From devSpot-wikis
Jump to: navigation, search

Licorne-icon.jpg

Contents

Description générale

Licorne (Lidar processing corner) est un ensemble cohérent de composants logiciels (framework) dédié au traitement de données LIDAR. Il fournit les briques essentielles pour faciliter le développement de logiciels de traitement LIDAR.
Ci-après l'architecture générale de Licorne et les différents modes d'exploitation qu'on peut en avoir. En orange les librairies principales du framework: AtmData et LidarCommons. En jaune la librairie MiscBox qui est une librairie métier de bas niveau. En vert les applications, dont Lisipro qui permet l'exécution de chaîne de traitement et qui fait parti du framework. Les autres applications représentent des logiciels d'inversion ou d'analyse du signal LIDAR exploitant Licorne selon une des trois axes offerts:

  • L'exploitation des produits LIDAR de niveau 1a générés avec Lisipro en configuration L1a.
  • L'exploitation du mécanisme de chaîne de traitement Lisipro pour exécuter en production des composants existants.
  • L'exploitation des différentes librairies pour le développement de nouveaux logiciels.


Architecture générale de Licorne


La première édition de Licorne nommée 'born to be alive...' est actuellement disponible. Elle comprend MiscBox v0.1, AtmData v0.1, LidarCommons v0.1 et Lisipro v0.1.

Vous pouvez télécharger les codes sources et la documentation associée sur notre forge GitLab ou sur la forge Renater SourceSup. Accès avec login/mdp, contactez nous pour obtenir un accès.

Description des composants logiciels

Librairie MiscBox

MiscBox fournit un ensemble de modules qui offrent des fonctions métiers de base pour la gestion des fichiers de données et de la production : manipuler les chaînes de caractères, les répertoires et les fichiers, les dates, gérer les fichiers de configuration, gérer les logs, etc. MiscBox se positionne comme une surcouche métier de base à des librairies Python standards : sys, os, shutil, datetime, logging, lxml, etc afin de factoriser tous les 'petits' outils de notre quotidien qu'on a tendance à développer encore et encore. MiscBox a pour vocation d'être utilisé 1/ comme outil auxiliaire dans le développement d'outils de traitement et d'analyse de données, et 2/ comme outil de base dans la gestion des flux de données et l'automatisation de l'exécution des traitements. Dans la roadmap des prochaines versions: transfert de données selon différents protocoles, génération d'interface graphiques de saisie de paramètres, etc.


Miscbox est disponible en version 0.1.

Librairie AtmData

AtmData est un gestionnaire de données fournissant également des outils de traitement de base pour l'exploitation de jeux de données. Il est optimisé pour la gestion de séries temporelles de données. La première thématique visée est les données sols pour la physique de l'atmosphère, et en particulier les données LIDAR, mais sa conception laisse ouverte son exploitation pour d'autres thématiques.

La librairie fournit une API de bas niveau (iodata) capable de lire et d'écrire un fichier de n'importe quel type de données et de sauvegarder les données dans une structure de stockage (DSO) standardisée. Cette structure de stockage s'appuie sur les tableaux multidimensionnels de la librairie Numpy. Pour faciliter l'intégration en lecture/écriture de nouvelles données, AtmData utilise un système de plugins.

Elle fournit également une API de plus haut (GeoScene) capable d'importer et exporter un jeu de données de différents types : point, profil, grille 2D ou 3D, trajectoire et série temporelle de ces différents types (testée uniquement avec des profils et séries temporelles de profils dans la version 0.1). GeoScene permet de gérer les séries temporelles et de transporter/adapter la donnée ainsi que la métadonnée tout au long d'une chaîne de traitement. Elle inclus des métadonnées de découverte, de contexte et de description sur le jeu de données, sur chacun des paramètres et sur chacune des dimensions. GeoScene offre la capacité de forcer à l'import et/ou à l'export le nom et/ou la valeur des métadonnées ainsi que le nom des paramètres et des dimensions. GeoScene s'appuie sur l'API iodata afin de pouvoir importer/exporter selon un format spécifique, ou sur son propre mécanisme afin de pouvoir exporter à tout moment le jeu de données au format NetCDF4 classic. Enfin, associés à GeoScene, AtmData proposer des outils de manipulation du jeu données: sous-échantillonnage, extraction, application de masque, tracés graphiques. Et dans la roadmap des prochaines versions: re-échantillonnage, extrapolation, fusion, filtrage, gestion de valeurs invalides ou manquantes, etc.


AtmData est disponible en version 0.1.

Librairie LidarCommons

LidarCommons est une librairie dédiée au traitement de données LIDAR. Elle fournit des fonctions unitaires prêtes à être intégrées dans une chaîne de traitement. Elle s'appuie sur AtmData pour l'accès aux données et leur gestion. LidarCommons propose un mécanisme d'algorithme évolutif permettant d'implémenter plusieurs versions d'un même algorithme (l'utilisateur fait son choix en passant le nom de la version en argument). Ce mécanisme s'accompagne de la possibilité d'exécuter automatiquement une sous-fonction d'analyse des paramètres d'entrée au lancement de la fonction, et une sous-fonction à la fin comme par exemple un calcul de propagation et d'estimation de l'incertitude (mécanisme envisagé pour cette application). LidarCommons est prévue pour accueillir des fonctions hautement paramétrables et la philosophie est de bannir le paramétrage 'en dur' dans les fonctions. Afin que cela reste souple et que l'utilisateur ne soit pas face à un nombre trop important de paramètres qu'il ne souhaite pas exploiter, à chaque fonction est associée un fichier de paramètres par défaut. De cette façon vous pouvez utiliser la fonction en manipulant uniquement les paramètres qui vous sont utiles.

LidarCommons implémente à l'heure actuelle deux algorithmes qui interviennent dans le traitement de niveau 1a: spurious (suppression de profils de mesure parasités) et somphot (optimisation du jeu de données par sélection des profils de mesure qui minimisent l'erreur statistique). Dans la roadmap de LidarCommons: algorithmes de niveau 1a ciblés sur l'analyse de la qualité du signal, algorithmes de niveau 1b (corrections instrumentales et fusion de canaux de mesure), algorithmes de niveau 2a pour la vapeur d'eau.


LidarCommons est disponible en version 0.1.

Applicatif Lisipro

Lisipro est un logiciel de workflow spécialisé pour l'exploitation d'AtmData et de LidarCommons. Il permet d'enchaîner facilement des fonctions de ces deux librairies. Pour Lisipro, une chaîne de traitement est un fichier XML listant les différentes fonctions à utiliser avec les paramètres associés. Lisipro offre également la possibilité de générer un fichier de configuration complet contenant les paramètres fournit par l'utilisateur et les paramètres par défaut qui ont été exploités, de telle sorte qu'un traitement puisse être complétement reproductible même si les paramètres par défaut des fonctions de LidarCommons évoluent.


Lisipro est disponible en version 0.1.

Atelier d'utilisation

Exercice 0 - installation

La procédure d'installation est décrite dans le guide de développement.

Pré-requis: système Linux sous Debian ou dérivé (ex. Ubuntu).

*Etape 1: installation git, pip, virtualenv, et de certaines dépendances sur votre sytème.

Pour ne pas interférer avec d'autres développements en cours sur votre système nous utiliserons un environnement virtuel. De plus afin de récupérer les paquets logiciels sur un des serveurs Git, git est nécessaire sur votre système ainsi que pip pour l'installation des librairies python dont dépends licorne. Tapez les commandes suivantes:

  sudo apt-get install git python-pip
  sudo pip install virtualenvwrapper
  Pour le bon fonctionnement de virtualenvwrapper, modifiez votre fichier $HOME/.bashrc en ajoutant:
  export WORKON_HOME=$HOME/.virtualenvs
  mkdir -p $WORKON_HOME
  source /usr/local/bin/virtualenvwrapper.sh
  Rechargez votre .bashrc en tapant la commande:
  source $HOME/.bashrc
  L'outil pip est pratique mais ne fait pas tout, il ne pourra pas résoudre les dépendances des librairies dont dépends licorne (oh!),
  donc tapez ce qui suit pour l'aider:
  sudo apt-get install python-wxgtk3.0 libxml2-dev libxslt1-dev lib32z1-dev cython python3-dev gfortran libblas3 libblas-dev
  liblapack3 liblapack-dev libhdf5-dev libpng12-dev libfreetype6-dev libnetcdf-dev tcl-dev tk-dev python-tk python3-tk

*Etape 2: création de l'environnement virtuel et installation de licorne

Vous pouvez maintenant créer l'environnement virtuel 'promise' et entrer dedans comme suit:

  mkvirtualenv promise
  workon promise
  nb: si vous voulez ressortir c'est 'deactivate'

*Etape 3: clonez les logiciels licorne, installez les dépendances et tester

Allez d'abord dans votre répertoire favori où vous souhaitez mettre les logiciels:

  cd $HOME/your_soft_dir

Clonez les 4 logiciels à partir du dépôt git (vous pouvez utilisez le login invité du projet: promise_guest / nous contacter pour le mot de passe):

  git clone http://osur-devspot.univ-reunion.fr/promise/miscbox.git
  git clone http://osur-devspot.univ-reunion.fr/promise/atmdata.git
  git clone http://osur-devspot.univ-reunion.fr/promise/lidarcommons.git
  git clone http://osur-devspot.univ-reunion.fr/promise/lisipro.git

Installez les dépendances nécessaires (attention vous devez être dans l'environnement virtuel promise):

  pip install -r ~/your_soft_dir/miscbox/requirements_dev.txt
  pip install -r ~/your_soft_dir/atmdata/requirements_dev.txt
  pip install -r ~/your_soft_dir/lidarcommons/requirement_dev.txt
  pip install -r ~/your_soft_dir/lisipro/requirements_dev.txt

Ajoutez les répertoires des logiciels à votre environnement virtuel:

  add2virtualenv /your_soft_dir/miscbox
  add2virtualenv /your_soft_dir/atmdata
  add2virtualenv /your_soft_dir/lisipro
  add2virtualenv /your_soft_dir/lidarcommons

Afin de vérifier que tout est nominal: dans chaque répertoire logiciel vous pouvez exécuter nosetests qui va lancer la série de tests associés:

  nosetests

C'est fini, vous êtes prêt à utiliser ou modifier licorne!

Personal tools
Namespaces

Variants
Actions
Navigation
Campagnes de l'OPAR
Projets
Developpements
Support informatique
Tools