Projets étudiants

= Développement =

Gestion de paquets VLE à distance - [mailto:gauthier.quesnel@toulouse.inra.fr Gauthier Quesnel] - INRA
Etudiants : un étudiant de M1

Information importante : ce projet est suivi obligatoirement d'un stage rénuméré à l'INRA pour l'étudiant

Mots-clés


 * VLE, serveur de paquets VLE, téléchargement, ftp et http.

Présentation du projet

La plate-forme VLE est une plate-forme de modélisation et de simulation de systèmes dynamiques. Elle permet à ses utilisateurs de développer des paquets qui représentent des projets de modélisation. Il existe plusieurs sortes de paquets dans VLE : les paquets sources et les paquets binaires. Les paquets sources contiennent comme indiqué dans leurs noms, les sources des modèles de simulations, les données de ces modèles et les fichiers d'expériences. Les paquets binaires proposent la même chose mais en remplaçant les sources des modèles par leur représentation compilée, c'est-à-dire, au format de fichiers .so ou .dll.

Afin de simplifier la vie des utilisateurs, nous aimerions qu'à partir de VLE et GVLE, nous puissions récupérer la liste des paquets disponibles sur une URL spécifiée. Cette liste est transmise à l'utilisateur qui peut alors sélectionner le ou les paquets qu'il aimerait récupérer ainsi que leur format.

Le dépôt de paquets est un dossier dans lequel se trouve tous les projets disponibles dans un format très simple. Chaque paquet VLE est stocké dans un dossier où se trouve :
 * un fichier description.txt : un fichier texte décrivant le paquet.
 * un fichier nom-paquet.tar.gz : une archive avec les sources du projet.
 * un fichier nom-paquet-win32.zip : une archive binaire pour win32.
 * un fichier nom-paquet-linux.zip : une archive binaire pour linux.

Objectifs


 * Regarder la bibliothèque libxml2 et ses méthodes nanoftp et nanohttp.
 * Développer une classe Repository dont l'interface permet (en utilisant nanoftp et nanohttp) de :
 * récupérer la liste de paquets du répertoire principal (un répertoire par modèle).
 * récupérer la description du paquet dans le répertoire (fichier Description.txt).
 * récupérer un fichier zip, tar.gz du répertoire du paquet.
 * Proposer une interface en ligne de commande depuis VLE.
 * Proposer une interface graphique pour GVLE.

Langages et technologies


 * C++, cmake, libxml2.

Génération de fichiers OpenDocument et OpenXML - [mailto:gauthier.quesnel@toulouse.inra.fr Gauthier Quesnel] - INRA
Etudiants : un étudiant de M1

Information importante : ce projet est suivi obligatoirement d'un stage rénuméré à l'INRA pour l'étudiant

Mots-clés
 * OpenDocument, OpenXML, odt, xlsx
 * Simulation, génération de fichiers XML.

Présentation du projet

VLE est un simulateur qui utilise des modèles de simulations et des valeurs d'initialisations pour générer des sorties. Ces sorties sont aujourd'hui enregistrées dans des fichiers simples au formats textes simples comme les fichiers cvs. Nous aimerions disposer de sorties plus conviviales pour les utilisateurs à travers les applications qu'ils utilisent, c'est-à-dire, OpenOffice ou Microsoft Office.

Les sorties d'un simulateur sont souvent représentées sous la forme de tableau dont l'ordonnée représente l'évolution du temps de la simulation et l'abscisse les variables observées. Ainsi, les formats de fichiers XML .ods et .xls semblent être de très bons candidats puisqu'ils sont issus des tableurs. Le but du projet est de développer deux greffons à OOV pour générer, en cours de simulation, des fichiers pour les tableurs OpenOffice ou Microsoft Office.

Objectifs


 * Étudier le fonctionnement de l'équipe de VLE.
 * Comprendre le fonctionnement des plug-ins OOV.
 * Étudier les normes OpenDocument, OpenXML dans leurs parties tableurs, et uniquement sur les données.
 * Implémenter le greffon OpenDocument.
 * Implémenter le greffon OpenXML.

Langages et technologies
 * C++ - CMake - Xml - libxml2.
 * Normes OpenDocument et OpenXML.

Génération de sorties pour VLE - [mailto:ramat@lil.univ-littoral.fr Eric Ramat] - ULCO/LIL/INRA
Etudiants : deux étudiants de L3

Mots-clés
 * Génération de fichiers formatés
 * HTML

Présentation du projet

[VLE] est un simulateur qui utilise des modèles de simulations et des valeurs d'initialisations pour générer des sorties. Ces sorties sont aujourd'hui enregistrées dans des fichiers simples au formats textes simples comme les fichiers cvs. Nous aimerions compléter nos formats de sortie, disposer de sorties plus conviviales pour les utilisateurs de type page Web et d'enregistrer les données de sorties directement dans des bases de données.

Les sorties d'un simulateur sont souvent représentées sous la forme de tableau dont l'ordonnée représente l'évolution du temps de la simulation et l'abscisse les variables observées. Le but du projet est de développer des plugins (greffons) à OOV pour générer, en cours de simulation, des fichiers.

Objectifs


 * Étudier le fonctionnement de l'équipe de VLE, sa démarche de développement et les outils de développement (g++, cmake et git).
 * Comprendre le fonctionnement des plugins OOV.
 * Étudier les formats TSV, ...
 * Proposer une sortie HTML avec des CSS
 * Étudier la librairie SQLxx pour l'accès aux bases de données et proposer une solution pour spécifier la relation entre données de sorties et champs d'une table d'une base de données
 * Implémenter les plugins.

L'ensemble des phases de développement passeront obligatoirement par le tracker de VLE sous sourceforge (VLE).

Langages et technologies
 * C++ - CMake - git
 * HTML/CSS
 * SQL et la librairie SQLxx

Placement automatique de noeuds dans un graphe - [mailto:gauthier.quesnel@toulouse.inra.fr Gauthier Quesnel] - INRA
Etudiants : deux étudiants de M2 (Cyril Marcq)

Mots-clés


 * Manipulation de graphes
 * Placement automatiques
 * Interface graphique

Présentation du projet

L'interface graphique GVLE, dont une partie est représentée sur les captures d'écrans suivantes, permet de représenter des graphes de modèles. Ces modèles sont de deux types : les modèles atomiques (les feuilles de l'arbre) et les modèles couplés (les noeuds de l'arbre). GVLE représente la hiérarchie de modèles couplés dans une fenêtre (image de gauche), et les modèles couplés avec seulement un niveau de sous-modèles (image de droite). Nous nous intéressons dans ce projet, uniquement à la représentation graphique d'un modèle couplé et non de sa hiérarchie.

Le placement des modèles d'un modèle couplé est aujourd'hui défini par l'utilisateur et avec des moyens très limités (de simples déplacements de boîte). Ainsi, comme le présente la figure de droite, les connexions entre les modèles se croisent et peuvent être difficiles à placer lorsque le modèle couplé possède beaucoup de sous-modèles.



L'objectif de ce stage est de proposer un ensemble d'algorithmes, à introduire dans la bibliothèque vlegraph, afin de proposer un placement automatique de modèles d'un modèle couplé sur une zone de dessin CairoSurface le tout en proposant une nouvelle visualisation des objets, de simple cercles pour les modèles atomiques ou couplé, et des flèches pour les connexions entre modèles.



Ce projet est susceptible d'être suivi d'un stage rémunéré au sein de l'INRA. Le stage pourra être effectué à Toulouse ou à Calais sous les encadrements de Éric Ramat, Gauthier Quesnel et Patrick Chabrier avec pour sujet le développement de GVLE.

Objectif


 * Comprendre le fonctionnement des 5 classes de la bibliothèque vlegraph.
 * Implémenter une méthode de placement automatique : par ex. les algorithmes à ressorts.
 * Implémenter une représentation graphique Cairo d'un modèle couplé.
 * Rendre interactive la représentation graphique de modèles couplés (les modèles et les connexions doivent pouvoir être créées, modifiées et/ou supprimées).
 * Remplacer la vue de la GVLE par celle nouvellement développée.

Langages et technologies


 * C++ - CMake - Gtkmm - Cairomm
 * Méthodes de graphes
 * Algorithmes à ressorts

jvle : wrapper Java pour VLE - [mailto:ramat@lil.univ-littoral.fr Eric Ramat] - INRA/LIL/ULCO
Etudiants : deux étudiants de M1

Information importante : ce projet est suivi obligatoirement d'un stage rénuméré à l'INRA pour les étudiants

Mots-clés
 * encapsulation (wrapping) de code C++
 * Java Native Interface

Présentation du projet

Le projet VLE (Virtual Laboratory Environment) est une plate-forme de modélisation et de simulation développée à l'INRA de Toulouse, au Cirad et au Laboratoire d'Informatique du Littoral de l'université du Littoral. La manipulation des projets de simulation est possible via plusieurs environnements et langages :
 * gvle, une interface graphique,
 * rvle, un wrapper R pour le logiciel R de statistiques,
 * pyvle, un wrapper python pour le scripting python et en particulier pour la construction d'interfaces Web

Pour être complet et répondre aux besoins des utilisateurs (informaticiens, chercheurs, ...), nous envisageons de proposer un wrapper Java. Ce wrapper aura les mêmes fonctionnalités (même API) que les wrappers R et Python :
 * la manipulation des fichiers de description d'une expérience et d'un modèle (les fichiers VPZ)
 * le contrôle d'une ou plusieurs simulations
 * la récupération en natif des données de sortie d'une simulation

Objectifs
 * étude de la technologie JNI (Java Native Interface) du langage Java
 * écriture du module de conversion de types (comment passer d'un objet C++ à un objet Java ou type simple)
 * écriture du wrapper proprement dit

Langages et technologies
 * Java et C++
 * JNI

Plugins de modélisation pour gvle - [mailto:ramat@lil.univ-littoral.fr Eric Ramat] - INRA/LIL/ULCO
Etudiants : deux étudiants de M1

Information importante : ce projet est suivi obligatoirement d'un stage rénuméré à l'INRA pour l'un des étudiants

Mots-clés
 * interface graphique avec GTKmm/C++
 * algorithmes de tracé de graphes

Présentation du projet

Le projet VLE (Virtual Laboratory Environment) est une plate-forme de modélisation et de simulation développée à l'INRA de Toulouse, au Cirad et au Laboratoire d'Informatique du Littoral de l'université du Littoral. VLE dispose d'une interface graphique de définition et de gestion de modèles et des expériences associées. A l'heure actuelle, la phase de construction combine à la fois un aspect graphique (la construction d'un graphe hiérarchique de modèle couplés) et un aspect programmation en C++. L'aspect graphique est déjà disponible. La partie développement en C++ est réalisée de manière simple via un éditeur de code. Or un environnement de modélisation doit se doter d'outils de plus haut niveau afin que le modélisateur puisse raisonner au niveau d'un ou plusieurs formalismes (équations différentielles, équations aux différences, automates à états finis, réseau de Petri, ...) et que l'écriture du code C++ soit allégé au maximum.

L'idée générale du projet est donc de développer des plugins (greffons) de modélisation à base d'interfaces graphiques (boites de dialogue, panel graphique, ...) et accompagnés de générateur de code C++. La génération de code sera simplifiée grâce à l'utilisation d'un système de templating comme ctemplate.

Objectifs
 * étude d'un formalisme qui se présente sous forme d'une extension sous VLE
 * conception de l'interface graphique
 * développement de l'interface graphique
 * écriture des fichiers de templates
 * génération de code C++

Tous les formalismes ne donnent pas lieu à la même difficulté. Certains vont se limiter à une boite de dialogue (par exemple, DifferenceEquation) et d'autres vont nécessiter des éditeurs graphiques (par exemple, PetriNet ou FSA).

Langages et technologies
 * GTKmm et C++
 * Glade
 * Cairo

VLE et les SIG - [mailto:raphael.duboz@cirad.fr Raphael Duboz] - CIRAD et [mailto:ramat@lil.univ-littoral.fr Eric Ramat] - INRA/LIL/ULCO
Information importante : ce projet est suivi obligatoirement d'un stage recherche pour l'étudiant à la Maison de la Télédetection - Montpellier

Mots-clés
 * modélisation spatiale
 * SIG
 * modèle VLE

Présentation du projet

Le projet VLE (Virtual Laboratory Environment) est une plate-forme de multi-modélisation et de simulation développée à l'INRA de Toulouse, au Cirad et au Laboratoire d'Informatique du Littoral de l'université du Littoral. A l'heure actuelle, VLE dispose d'extensions pour la prise en compte de modèles spatiaux (Cell-DEVS, en particulier). En réalité, tout modèle peut représente un objet spatial (un lieu, une parcelle, ...) sans avoir un caractère particulier sous VLE. Dans ce cas, aucune extension n'est nécessaire. La description de la géométrie est alors interne au modèle et seules les connexions entre modèles pourraient traduire un certain voisinage spatial entre modèles. Une première expérience a été tenté pour construire de manière automatique un modèle spatial à partir de la description géométrique d'un parcellaire. Cette expérience est basée sur une description vectorielle au format shapefile et la bibliothèque GEOS pour les calculs géométriques.

L'objectif du projet est donc d'étudier les concepts des SIG et de les mettre en application sur un modèle particulier sous VLE. Cette mise en oeuvre sera l'occasion de construire une boucle contenant :
 * la construction dynamique de modèles VLE à partir de description Raster ou vectoriel à l'initialisation d'un modèle ;
 * la mise à jour du SIG pendant la simulation sachant que la géométrie et/ou les relations spatiales et/ou les données spatiales changent pendant la simulation.

Dans ce travail, on pose les hypothèses suivantes :
 * pas de relation prévilégié avec un SIG (des fichiers shapefiles peuvent suffir) ;
 * les données du SIG ne sont modifiées que par le modèle VLE (pas de dynamique dans le SIG).

Objectifs
 * étude des concepts des SIG : raster / vecteur ; topologie ; opérateurs spatiaux ; gestion du temps dans les SIG ;
 * réalisation d'un executive de construction ;
 * réalisation de l'interaction avec un SIG (ou plutôt avec des fichiers de type SIG).

Langages et technologies
 * C/C++
 * shapefile et Geos

= Système =

Plate-forme de tests unitaires pour VLE - [mailto:gauthier.quesnel@toulouse.inra.fr Gauthier Quesnel] - INRA
Mots-clés


 * Tests unitaires
 * Virtualisation

Présentation du projet

Les tests unitaires sont très importants dans le développement de logiciels informatiques et plus particulièrement avec les méthodes agiles. La plate-forme VLE dispose de tests unitaires mais ces tests ne sont exécutés que sur les machines des développeurs, bien souvent, du x86 sous Debian GNU/Linux ou Microsoft Windows XP. Les programmes CMake (générateurs de Makefiles</tt>) et CDash (analyseur de résultats de tests unitaires) permettent de mettre en place un outil efficace pour la gestion de tests unitaires depuis de multiples OS, compilateurs, saveurs de noyaux etc. Par exemple, la page suivantes est un exemple d'analyses des sorties de CDash depuis les tests unitaires de CMake.

Pour ce projet, nous nous proposons de développer un ensemble de scripts, programmes et autres infrastructures logicielles afin de pouvoir lancer les tests unitaires de VLE depuis plusieurs sources (OS, compilateurs etc.). Pour cela, un ensemble de machines virtuelles lancées pour exécuter les tests unitaires doit être mis en place.

Objectif


 * Étudier les logiciels CMake et CDash.
 * Ajouter les scripts CMake à VLE pour prendre en compte les tests unitaires.
 * Utiliser des outils de virtualisation, de chroot etc. pour mettre en place un ensemble d'OS de tests :
 * Dans un premier temps : Debian GNU/Linux x86, Freebsd x86 et Windows XP.
 * Dans un second temps : Linux sur : x86-64, PPC etc.
 * Proposer une structure pour intégrer ces tests pour n'importe quel type de logiciel.

Langages et technologies


 * CMake, chroot, kvm, qemu, Xen.
 * Debian, FreeBSD, MacOS, Windows etc.

= Web =

Plate-forme Web de démonstration pour la gestion des plans d'expériences de VLE - [mailto:ramat@lil.univ-littoral.fr Eric Ramat] - INRA/LIL/ULCO
Etudiants : un étudiant de M2 (Daniel Salomé)

Mots-clés


 * développement Web
 * exécution sur cluster

Présentation du projet

VLE est aujourd'hui disponible sous forme d'un exécutable modulaire pour la simulation de modèles à base d'événements discrets. Il s'accompagne aussi d'outils d'interface comme gvle ou eov pour la construction de modèles, l'exécution d'expériences simples et de visualisation temps-réel des simulations. Ces outils sont plutôt orientés mono-postes même si la visualisation temps-réel peut être déportée par rapport au noeud d'exécution de la simulation.

Dans ce projet, on se propose de construire, à partir d'un cluster de 8 serveurs SUN V20Z bi-processeurs et d'un serveur bi-processeur, un "petit" serveur de démonstration de vle en mode cluster. Ce serveur doit aussi embarquer un dépôt de modèles vle sous forme de paquets et des interfaces de gestion des expériences.

Objectif

L'objectif est de proposer une interface Web pour la définition et l'exécution de plans d'expériences. Il se découpe en plusieurs sous-projets :
 * les plans d'expériences :
 * étude de la solution de développement Web (Python) :
 * pour le framework Web : Pylons (le livre)
 * pour la persistance : SQLAchemy et SQLite (un livre)
 * pour les templates : Mako
 * pour l'AJAX : jQuery (communauté française)
 * pour l'URL dispatching : Routes
 * les paquets debian : python2.5, python-pylons, python-authkit, python-sqlalchemy, sqlite3, python-mako, libjs-jquery et python-routes (plusieurs paquets s'installent lors de l'installation du paquet python-pylons)
 * développement des scripts de définition d'un plan d'expériences simple (au sens VLE)
 * l'interface utilisateur :
 * gestion des accès (voir AuthKit de Pylons)
 * gestion des plans (archivage)
 * tracé de courbes de résultats avec matplotlib et SciPy à partir des sorties de simulations
 * courbes 2D (sortie, temps)
 * grilles (avec choix de la date de l'état à visualiser)
 * gestion des modèles (dépôt de modèles VLE - ssh via des comptes sur le serveur)
 * le cluster :
 * recherche d'une distribution adéquate pour le clustering et installation sur le cluster
 * installation du noeud root et déploiement de l'architecture Web
 * l'exécution sur le cluster :
 * exécution des plans sur le cluster
 * visualisation de la progression de l'exécution des plans
 * reporting d'exécution des plans

La grande majorité des tâches ont été réalisé dans le cadre d'un projet et d'un stage en 2009. Il reste "plus" que la partie déploiement de l'application et gestion de l'exécution sur cluster.

Langages et technologies


 * Python - Pylons
 * Linux/clustering