# 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](https://pbil.univ-lyon1.fr/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](https://esajournals.onlinelibrary.wiley.com/doi/10.1002/ecs2.2567) analysant plus de 60 000 articles publiés dans les 30 plus grandes revues d'Ecologie classe ade4 à la [huitième place](https://twitter.com/LbbeLyon/status/1176757653936193536/photo/1) 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](https://scholar.google.com/scholar?hl=fr&as_sdt=0%2C5&q=ade4&btnG=).
## 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](https://sdray.github.io/adespatial) 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](
http://lbbe-shiny.univ-lyon1.fr/Reproducible_Research/ShinyPCA/)).