Try   HackMD

Projet de stage ade4

Contexte

ade4 (Ecological Data Analysis : Exploratory and Euclidean Methods in Environmental Sciences) est un logiciel libre développé au sein du laboratoire de Biométrie et Biologie Evolutive (Université Lyon 1). Ce logiciel statistique implémente de nombreuses méthodes d'analyse multivariée (dont plusieurs ont été développé au laboratoire) et des outils graphiques permettant la représentation des résultats. Le premier pas du logiciel a été lancé en 1985 avec l'écriture d'une procédure de diagonalisation de matrice en langage assembleur pour l'Eclipse S/140. Cette procédure permettait de calculer les valeurs propres et les vecteurs propres d'une matrice en un temps raisonnable, ce qui rendait possible l'utilisation interactive de méthodes d'analyse de données multivariées sur des ensembles de données écologiques de taille réelle. Après de nombreux développements et versions (Microsoft QuickBasic avec interface Hypercard, puis en C), ce logiciel a été complètement réimplementé sous la forme d'un package pour le langage/logiciel statistique R.

La première version du package a été soumise en décembre 2002 sur le CRAN. Depuis, le package s'est développé via notamment l'implémentation de plusieurs packages satellites plus spécifiques (adegraphics, adespatial, adephylo, ade4TkGUI, adegenet, adehabitat, adiv) et il est maintenant largement utilisé dans le monde scientifique. Une récente synthèse analysant plus de 60 000 articles publiés dans les 30 plus grandes revues d'Ecologie classe ade4 à la huitième place des packages R les plus utilisés au monde. Plusieurs articles et un livre ont également été publiés afin de décrire le fonctionnement du logiciel et ils sont cités plus de 7000 fois.

Projets de stage

Même si il est régulièrement enrichi et mis à jour, le code du package date de 2002 et certaines parties du code mériteraient une réimplémentation afin de les rendre plus efficaces en utilisant de nouvelles technologies. De plus, certains changements programmés dans des packages extérieurs dont dépend adegraphics nous oblige à reprendre des parties de code qui vont devenir obsolètes. Ce travail est nécessaire sous peine de réduire les fonctionnalités de notre package. Dans ce cadre, nous proposons plusieurs sujets de stage dans lequels un ou plusieurs stagiaires peuvent piocher afin de répondre à notre besoin et acquérir de l'expérience en programmation C++ (sujet 1), programmation R (sujet 2) ou programmation Web/R/Shiny (sujet 3).

Réimplémentation du code C du package ade4 via l'utilisation du package Rcpp

Un premier axe de développement serait de remettre à jour du code existant afin d'améliorer les performances du logiciel, notamment pour l'analyse de très gros jeux de données. Un premier objectif serait de réimplémenter le code C du package (plus de 5000 lignes) qui est appelé par le code R d'ade4 pour la réalisation de test statistique par permutation des données. L'usage de solutions techniques récentes (packages Rcpp et RcppArmadillo) facilitera l'interfaçage avec R et devrait réduire l'usage mémoire (en évitant de dupliquer des objets) et accélerer le code. Le code R pourrait aussi être amélioré en plusieurs points (passage en matrice, utilisation d'algorithmes de diagonalisation seulement pour les premiers axes, etc). L'implémentation des tests unitaires pourrait également être considerée.

Réimplémentation des fonctionnalités de gestion et représentation de données géographiques

Le package adegraphics fournit des fonctions grapĥiques permettant de représenter les résultats d'une analyse réalisée avec ade4. Ce package utilise une programmation orientée objet et permet ainsi de réaliser et modifier/personnaliser des graphiques efficacement. Il fournit également les outils pour représenter des données géographiqes (raster, vecteurs, points, lignes) en utilisant les classes et fonctions utilitaires associés du package sp. A moyen terme (fin 2023), le package sp deviendra obsolète et sera remplacé par le package sf. L'objectif de cet axe de développement vise donc à implémenter la réalisation de cartes (stockées au format sf) dans l'environnement graphique du package lattice sur lequel se base adegraphics. Ce projet pourrait également concerner les effets de cette mise à jour sur les packages adespatial (quelques fonctions) et ade4 (jeux de données). D'un point de vue plus globale, une meilleure interaction avec le tidyverse, largement utilisé, serait souhaitable et pourrait étendre cet axe (possibilité de traiter des données stockées dans des tibble, etc).

Création d'un nouveau site web et mise en place de documentation interactive pour le package

Un dernier axe de développement pourrait concerner l'amélioration de la communication autour du logiciel. Du fait de notre activité, il est difficile de dégager du temps pour travailler à la communication et la valorisation du package. Ainsi, le site web du package à (http://pbil.univ-lyon1.fr/ade4/) est d'une autre époque et il serait bon de reprendre le site en profondeur. Une possibilité serait de s'appuyer sur le package pkgdown qui permet de réaliser facilement un squelette de site pour un package R (voir un exemple réalisé pour adespatial). Ce squelette pourrait ensuite être enrichi d'une FAQ, d'une galerie de graphiques, tutoriels, etc. Il pourrait également intégré une version en ligne du package sur laquelle nous venons juste de commencer à travailler (voir un prototype ici).