Valid XHTML     Valid CSS2    

       non su         

    Exposé du 6 juin 2014

       Céline ROUSSEAU, Tristan BOUREAU et Gilles HUNAULT

 

Titre court

Valorisation

Titre long

Valorisation de l'analyse d'images de fluorescence de chlorophylle sur le plateau PHENOTIC : comment passer d'un script R interactif à un service Web d'analyse d'images automatique

 

Table des matières cliquable

non su

1.

Une petite pièce de théâtre

2.

Les étapes de la valorisation

3.

Détails techniques du script

4.

On n'y pense pas au début mais...

5.

Comment conclure sans conclure (!)

non su

 

 

1. Une petite pièce de théâtre

rideaux.png

 

 scène précédente                                                    scène suivante 

 

2. Les étapes de la valorisation

Comme vous avez du le comprendre au travers de la petite pièce de théâtre, Il y a avait au départ un script d'analyse d'images, écrit dans le cadre d'une thèse. Ce script (ou programme) utilise le logiciel R. Ce script, testé, fiable, mais artisanal, fonctionnait très bien nos ordinateurs, avec des images en local. Mais pour l'utiliser ailleurs, en routine et sur d'autres ordinateurs, il a fallu effectuer quelques modifications. C'est ce que nous détaillons dans la partie 3.

La valorisation de ce script consiste à fournir un service Web payant qui (durant la nuit) :

  1. décompresse les images de l'archive fournie,

  2. les analyse,

  3. produit un PDF de l'analyse,

  4. fournit des courbes d'évolution au cours du temps,

  5. envoie un mail pour prévenir que les résultats sont disponibles.

La modification du script n'est pas la seule étape. C'est la partie amont la plus immédiate à envisager. Après réflexion, il est facile de se rendre compte qu'il y a des questions qui ne posaient pas en local :

  • où stocker les fichiers (quelle machine, quel coût, quelle gestion...) ?

  • quel volume de fichiers cela va-t-il représenter au fil des années ?

  • comment facturer le service (à l'acte, au volume de fichiers, à la durée d'analyse...) ?

  • puisqu'il s'agit s'un service payant, comment garantir sa qualité, son exécution ?

  • y a-t-il des problèmes de propriété intellectuelle (pour le script, les données...) ?

  • faut-il stocker ou détruire les images après analyse  ?

  • si on stocke les images après analyse, quelle base de données faut-il construire et avec quelle interface ?

  • quelle pérennité pour le service ?

  • quelle maintenance, quelle évolution pour le script ?

  • quels acteurs (secrétariat, assistant, contact...) sont impliqués ?

  • quelle charge cela va-t-il représenter pour le service informatique qui gèrera les analyses et les images ?

La [longue] liste de ces questions montre qu'on est bien loin de juste modifier un script. Les questions qui se posent sont plutôt définies en termes de gestion, de stockage, de service et de qualité de service, de facturation...

Avec encore plus de recul, il y aussi des possibilités de prolongement scientifique, de recherche fondamentale qui peuvent émerger :

  • Peut-on modéliser puis simuler l'évolution des symptomes et en faire un film animé ?

  • Pourrait-on envisager de photographier ou filmer avec une caméra les feuilles et les envoyer sur le serveur d'images en temps réel ?

  • Si on comprend les mécanismes biologiques et physiologiques sous-jacents, peut-on automatiser les choix de seuils ?

  • Pourrait-on fournir un service de surveillance automatique de serres, de jardins... ?

  • Pourrait-on prévoir un envoi en temps réel des images et un envoi systématique, par exemple en fin de semaine des résultats ?

  • «Remote sensing» : serait-il possible avec de nombreux capteurs bon marché de dédier un capteur à une feuille et de récupérer massivement des images par wifi ?

Si on revient, stricto sensu aux étapes de la valorisation, on peut les résumer ainsi :

La première étape consiste à passer d'un produit artisanal à un produit fiable, fonctionnel.

La deuxième étape vient définir et réunir les divers acteurs du service pour qu'ils se répartissent les tâches et qu'ils collaborent [efficacement].

La troisième étape est celle qui vient mettre en place la facturation et la gestion du service.

Enfin, la quatrième et dernière étape avant la mise en production est la phase de test pour s'assurer que le service est opérationnel.

Ensuite, ce n'est plus de la valorisation au sens strict du terme, mais de l'exploitation, de de la production, de la maintenance, du suivi...

 

3. Détails techniques du script

Notre script initial était interactif : il posait quelques questions et venait confirmer les réponses fournies.

Nous avons du séparer la partie saisie des paramètres dans une page Web de la partie exécution différée via un processus automatique paramétré sans aucune interaction ni intervention humaine de façon à pouvoir réaliser les analyses d'image de nuit :

          non su

non su

non su

non su

non su

non su

non su

Notre script fonctionnait sous Windows, nous avons du l'adapter pour Linux.

Notre script demandait un répertoire puis un nom de controle, comme H2O ou h2o.

Nous avons modifié la question associée pour que le terme Controle puisse se comprendre comme Référence ou Témoin.

Le script ne doit pas s'interrompre ou "planter", il a donc fallu fiabiliser le code, prévoir l'impossible (comme l'absence de données, la division par zéro, le manque d'un fichier-image dans l'archive)...

Vous pouvez voir  ici  une simulation du service en exécution et   là   la page de présentation du service Web.

 

4. On n'y pense pas au début mais...

Quand on programme pour soi, on a vite fait d'écrire du code «relativement propre» mais qui n'est relisible que par soi. Voici donc quelques "trucs" auxquels il faut penser, en programmation scientifique de production :

  • il faut en général réfléchir et écrire les commentaires puis le code entre les commentaires afin de toujours disposer de commentaires et d'être capable de se relire ;

  • il faut toujours prévoir une démonstration facile à reproduire ;

  • quand on sait que son script va être exécuté par d'autres utilisateurs que soi, il ne faut jamais faire confiance à l'intelligence ou aux compétences informatiques de l'utilisateur mais au contraire prévoir toutes les erreurs possibles. Ainsi :

    • il faut toujours convertir les virgules en points dans les saisies de valeurs décimales 
    • il faut toujours penser au typage des paramètres
    • il faut toujours afficher des informations au fur et à mesure quand l'exécution est longue...
  • il faut préparer et disposer d'une description des calculs, de la méthode, du choix des options, des paramètres, parce qu'il y aura toujours quelqu'un(e) qui viendra demander :« au fait, en détail, qu'est-ce qu'il fait, votre script ? » ou encore : « il sert à quoi, ce paramètre ?».

  • si la durée d'exécution dépasse la minute, en plus d'affichages partiels et d'attente (comme une barre de progression ou un message comme fichier 15 / 50), il faut se poser la question de l'optimisation du code, en particulier en R, qui est vectoriel.

    Ainsi, en programmation classique, on dispose de tableaux et le principal moyen d'action sur les tableaux est la boucle de parcours, comme par exemple pour calculer la somme des éléments du tableau :

    
         #####################################################################################
         #                                                                                   #
         #   algorithme général du calcul de la somme des éléments du tableau nommé tdata    #
         #                                                                                   #
         #####################################################################################
         
         # initialisation de la somme
         
         somTab <- 0
         
         # itération sur les éléments du tableau
         
         pour chaque élément telt du tableau tdata
         
            ajouter telt à somTab
         
         fin pour telt
         
         #####################################################################################
         #
         # implémentations classiques de la boucle de parcours :
         #
         #####################################################################################
         
         /*
         
         
         for (telt in tdata) {
             somTab = somTab + telt
         } # fin de pour telt
         
         for (ind=0,ind<size(tdata),ind=ind+1) {
             telt = tdata[ind]
             somTab += telt
         } # fin de pour telt
         
         for (ind=1,length(tdata)) {
             telt = tdata[ind]
             inc(somTab,telt)
         } # fin de pour telt
         
         # implémentation en R obligatoire
         
         somTab <- sum( tdat)
         
         # implémentations quasiment interdites en R
         
         for (telt in tdata) { ...
         
         for (ind in 1:length(tdata)) { telt <- tdata[ind] ...
         
         */
         
    

    En R, il faut toujours commencer par se demander comment se passer des boucles ? Par exemple, pour la somme des éléments d'un vecteur, R fournit une fonction nommée sum() qui dispense d'écrire explicitement la boucle de parcours. Pour plusieurs lignes ou colonnes dans une matrice, R fournit des fonctions nommées rowSums() et colSums() en plus de apply(FUN=sum,...). Pour calculer les sommes des composantes d'une liste, R fournit des fonctions nommées lapply() et sapply(). Pour calculer des sommes correspondants à des sous-groupes, R fournit des fonctions comme mapply(), tapply(), by... et cela, toujours avec des itérations implicites, sans aucune boucle à écrire soi-même...

 

5. Comment conclure sans conclure (!)

On dit souvent qu'en recherche, rien n'est jamais fini, qu'une réponse à une question amène une autre question. En valorisation, c'est souvent pareil : un service en fonctionnement oblige toujours à de la maintenance, de la mise à jour, de la refonte, de l'évolution. Un bon service stimule l'imagination et invite à en créer un autre, ou à en développer un en parallèle.

Avant de se lancer dans une démarche de valorisation, il faut savoir que c'est une démarche souvent longue, de temps en temps complexe, avec de nombreux acteurs, bref parfois une aventure et des fois, une galère...

 

                         non su

 

 

retour gH    Retour à la page principale de   (gH)