Ce wiki est réalisé par le CATI CaSciSDI de l'Inra. [poster de présentation du wiki]

Pour faire du calcul scientifique de qualité et reproductible, il est nécessaire d'associer aux résultats de calcul tout ce qui est nécessaire pour reproduire les résultats :

Connaître les pratiques conseillées et partagées permet d'améliorer ses propres approches et aussi de mieux évaluer les travaux de calcul faits par d'autres.

Remarque : dans cette page, lorsque le lien pointe vers une autre page ou un fichier hébergé par le wiki du site, la petite image suivante  information15.png est ajoutée après le lien.

A - Les données

Gérer les données va permettre de les trouver, utiliser, analyser plus facilement mais aussi permettre aux collaborateurs et aux autres scientifiques de comprendre et d'utiliser ses données.

En les documentant et en assurant leur partage, elles pourront être citées et acquérir ainsi plus de crédit.

Bibliographie

  • A Guide to Data Management in Ecology and Evolution. Bristish Ecological Society, 2014. [PDF]
  • DataONE (Data Observation Network for Earth) Data Management Guide [PDF] and Best practices. [www]
  • Best practices for data management in neurophysiology. [www]
  • Introduction to Data Technologies. Paul Murrell (2013). [PDF]  [www]
  • wiki INRA : gérer, déposer, décrire, publier ses données. [www
  • Tutoriels sur  la rédaction d’un DMP (Data Management Plan), proposés par l'Inist-Cnrs dans le cadre des programmes européens H2020. [www]
  • how and why you should manage your research data. [www]

1. Planifier la gestion de données

* S'appuyer sur une documentation vivante, continuellement mise à jour et adaptée.
* Choisir la taille des échantillons
      . Utiliser un calcul de puissance [Fiche PDF],  [Présentation PPT PDF]  information15.png

2. Gérer les données brutes

* Garder les données brutes
      . Conseils de saisie information15.png
* Utiliser des formats standardisés et non propriétaires

3. Prétraitements

* Garder la description des prétraitements (scripts, workflow)  -> par exemple VisTrails, Taverna,  Hamake ...
* Versionner les prétraitements
* Détecter les observations suspectes, prendre une décision
    . outliers ou données extrêmes information15.png

4. Gérer les données utilisées

* Documenter les données
* Versionner les données
* Stocker les données et les scripts utilisés pour générer les figures

5. Préserver les données

* Les mettre sur des supports pérennes

6. Partager les données

Les données de la recherche doivent être gérées et partagées pour répondre à de nouvelles obligations (nouvelles lois, nouvelles pratiques éditoriales...). En conséquence, les pratiques évoluent. Cette page tente de regrouper et d'organiser des liens utiles, le but étant de regrouper l'information actuellement disponible (nov 2016).

ACTU : séminaire INRA sur les data-papers, 20 mars. [Plaquette data paper 20Mars2017def.pdf]
Ce séminaire est une introduction à un dispositif de formation aux data papers qui sera proposé l’an prochain sur les centres INRA. Il sera décliné selon différents types de données (biodiversité, génomique, phénotypage, enquête, …) afin d’outiller les futurs publiants et de leur permettre d’être en mesure de « datapublier ».

* Utiliser une plateforme de partage (FigShare, Zenodo, Dryad ... )  information15.png
* Se documenter sur le data-partage (liens utiles)  information15.png

B- Les codes de calcul

Les logiciels sont une sorte d'appareillage expérimental et doivent être construits, vérifiés et utilisés avec autant d'attention que tout autre appareillage physique.

De plus, les logiciels étant souvent ré-utilisés, un logiciel non fiable peut avoir des conséquences désastreuses en amenant à des conclusions erronées.

Bibliographie

  • Best Practices for Scientific Computing. G. Wilson et al. Plos Biology 12(1), 2014. [PDF]
  • Nine Years of Reproducible Research: From R / Sweave to Org. C. Pouzat. 2014. [PDF]
  • Recherche reproductible et calcul scientifique. MJ. Cros. Journées math-info de l'Inra, Mars 2014. [PDF]
  • Cours/sensibilisation sur les problématiques de la recherche reproductible avec illustration de mise en œuvre. Arnaud Legrand. 2014. [Partie 1] [Partie 2]

1. Ecrire les programmes pour des hommes pas pour des machines

* Un programme ne doit pas demander aux lecteurs de retenir beaucoup de chose en mémoire à la fois

* Donner des noms cohérents, distinctifs, avec du sens

* Uniformiser le style de codage (guide de programmation)
     matlab15.png  Conventions de codage pour Matlab  information15.png
    c++Logo.png conventions de codage pour C++

* Utiliser les constructions et paradigmes adéquats
     matlab15.png Programmation orientée objet sous Matlab  information15.png

     R15.png  Formatter un script R avec le package formatR (fiche du site R4ciam)

2. Laisser l'ordinateur faire le travail

* Faire que ce soit l'ordinateur qui répète les taches

* Enregistrer les commandes récentes dans un fichier pour les réutiliser

* Automatiser les workflows

3. Faire des changements incrémentaux

* Travailler par petites étapes avec des retours fréquents

* Utiliser un gestionnaire de version information15.png
      . Utiliser Git  information15.png
              R15.png  Utiliser Git sous RStudio (pour l'environnement R) information15.png

* Mettre tout ce qui a été créé manuellement dans le gestionnaire de version

4. Ne pas (se) répéter

* Représenter chaque élément une seule fois de manière claire

* Modulariser le code

* Réutiliser le code existant lorsque c'est possible

5. Prévoir des erreurs

* Décrire les assertions qui doivent être vérifiées par le programme

* Automatiser les tests information15.png
      R15.png Tests unitaires sous R  information15.png

* Utiliser un outil de mise au point interactif

6. Optimiser le code uniquement après qu'il ait marché correctement

* Utiliser un profiler pour identifier les goulots d'étranglement

* Ecrire le code dans le plus haut niveau de langage possible

7. Documenter l'objectif et la conception, pas la mécanique

* Documenter l'objectif, les raisons pas l'implémentation

* Reprendre le code pour qu'il soit clair et facile à comprendre

8. Collaborer

* Relecture du code avant enregistrement dans un gestionnaire de version

* S'appuyer sur de la programmation par paire

* Utiliser un tracker pour maintenir une liste des taches et des bugs

* Utiliser des éditeurs collaboratifs information15.png

C - Processus et environnement

Une description précise de comment le code a été appliqué aux données (environnement matériel, logiciel, documentation des codes et de toutes les étapes non automatiques.

1. Enregistrer un processus

* Faire de la programmation lettrée (literate programming)

R15.png Sous R, les approches les plus utilisées sont basées sur Sweave (voir la fiche et le tutoriel sur le site de R4ciam) ou knitr,

emacs15.png Avec Emacs, on peut utiliser le mode Org information15.png

python15.png Pour les utilisateurs de Python, il existe IPython

latex15.png Avec l'environnement LaTeX DocStrip. Pour créer un compendium, voir l'article de M. Lundholm.

*  Utiliser un workflow manager  -> un exemple : Taverna

2. Conserver l'environnement

* Décrire l'environnement matériel et logiciel

* Archiver les versions des programmes externes utilisés

* Empaqueter le tout  -> par exemple avec une machine virtuelle, Docker, un paquet Linux

* Utiliser des plateformes web pour diffuser ou pour permettre une exécution pendant de nombreuses années   -> par exemple recomputation.org, RunMyCode.org

D - Calcul

L'idée est de partager ici des contributions liées aux calculs numériques, à l'implémentation de méthodes mathématiques et plus généralement ce qui n'a pas trouvé place dans les parties précédentes.

     matlab15.png  Régression linéaire sous Matlab information15.png

E - Diffuser les résultats

latex15.png LaTeX - TikZ information15.png

latex15.png Patron de documents pour LaTeX ou LyX information15.png
     

F - Ressources externes

R15.png Site sur connaissances et pratiques de l'environnement R (R4ciam) du cati CaSciSDI de l'Inra

Après vous être connecté avec un identifiant LDAP INRA (bouton 'Connexion' en haut à gauche de chaque page), vous pouvez laisser un commentaire en fin de chaque page consultée pour la compléter, la commenter ...

Créé par Admin le 2015/01/22 16:28
Traduit en fr par Admin le 2015/01/22 16:28
   
© INRA Copyright - Directeur de publication : Hervé Richard
XWiki Enterprise 6.4.6 - Mentions Légales