Une brève histoire de la recherche reproductible et de ses outils

, MAP5, Univ. Paris-Descartes et CNRS UMR 8145

Vendredi 13 mai 2016

Introduction

Qu'est-ce que la « recherche reproductible » ?

Une remarque

Histoire courte

Le Journal of Money, Credit and Banking

Les « points faibles » de l'approche

Dette publique et taux de croissance (un exemple récent en économie)

Le Stanford Exploration Project

En 1992, Jon Claerbout et Martin Karrenbach dans une communication au congrès de la Society of Exploration Geophysics écrivent :

A revolution in education and technology transfer follows from the marriage of word processing and software command scripts. In this marriage an author attaches to every figure caption a pushbutton or a name tag usable to recalculate the figure from all its data, parameters, and programs. This provides a concrete definition of reproducibility in computationally oriented research. Experience at the Stanford Exploration Project shows that preparing such electronic documents is little effort beyond our customary report writing; mainly, we need to file everything in a systematic way.

Communication dont la « substantifique mœlle » sera extraite par Buckheit et Donoho (1995) qui écriront :

An article about computational science in a scientific publication is not the scholarship itself, it is merely advertising of the scholarship. The actual scholarship is the complete software development environment and the complete set of instructions which generated the figures.

Les outils du Stanford Exploration Project

Les géophysiciens du SEP effectuent l'analyse de gros jeux de données ainsi que des simulations de modèles géophysiques « compliqués » (basés sur des EDPs) ; ainsi :

Le SEP a depuis développé Madagascar, un outil puissant et « flexible », orienté vers la géophysique et dont le moteur de production est SCons -- lui même basé sur Python.

Points forts et faibles de l'approche

Bilan (personnel) sur la « RR avec moteur de production »

Un détour par la programmation lettrée

Lorsqu'en 1976, Donald Knuth reçoit les épreuves de la seconde édition du second volume de son opus magnum (The Art of Computer Programming), il est horrifié par leur (très) basse qualité typographique ; il décide donc :

  1. d'écrire, \TeX{}, un logiciel de composition de document ;
  2. il en profite pour introduite l'idée de programmation lettrée et développe WEB, un logiciel qui permet de la mettre en œuvre.

Avec la programmation lettrée, le code et sa documentation sont « mélangés » -- afin de rendre le code facilement compréhensible par un humain, par opposition à un compilateur -- dans un même fichier ASCII (ou maintenant UTF8). Deux sorties peuvent être produite :

La programmation lettrée expliquée par D Knuth

« Je crois que le temps est venu pour une amélioration significative de la documentation des programmes, et que le meilleur moyen d'y arriver est de considérer les programmes comme des œuvres littéraires. D'où mon titre, " programmation lettrée ".

Nous devons changer notre attitude traditionnelle envers la construction des programmes : au lieu de considérer que notre tâche principale est de dire à un ordinateur ce qu'il doit faire, appliquons-nous plutôt à expliquer à des êtres humains ce que nous voulons que l'ordinateur fasse.

Le praticien de programmation lettrée peut être vu comme un essayiste, qui s'attache principalement à l'exposition du sujet et à l'excellence du style. Un tel auteur, le dictionnaire à la main, choisit avec soin les noms de ses variables et explique la signification de chacune. Il cherche à obtenir un programme qui est compréhensible parce que les concepts ont été présentés dans le meilleur ordre pour la compréhension humaine, en utilisant un mélange de méthodes formelles et informelles qui se complètent l'une l'autre. »

— Donald Knuth, Literate Programming (source traduction Wikipédia)

"Détournement" de la programmation lettrée : R et sa fonction Sweave

R est un langage distribué sous licence GPL, décrit de la façon suivante sur la page des FAQ :

R is a system for statistical computation and graphics. It consists of a language plus a run-time environment with graphics, a debugger, access to certain system functions, and the ability to run programs stored in script files.

Pour les programmeurs, R s'inspire du scheme mais à une syntaxe type C :

Sweave

Avec Sweave, on remplace les figures et les tableaux d'un article par le code qui les génère.

Exemple

Un morceau de fichier Sweave ressemble à :

\subsection{Résumé des données}
Le \textit{résumé à 5 nombres} du jeu de données 
$\alpha$ est :
<<resume-jeu-alpha>>=
summary(α)
@
On voit qu'\textbf{aucune saturation ne semble 
présente}...

Le vrai lien entre Sweave est la programmation lettrée est la syntaxe commune délimitant les blocs de codes dans le fichier source :

Inconvénients

Développements « récents » : langages de balisage léger

Un point « faible » des approches précédentes, la nécessité d'écrire en \LaTeX{} ou HTML, a maintenant disparu avec le développement de langages de balisage léger comme :

Avec le logiciel pandoc, développé par le philosophe John MacFarlane, il est possible de passer quasi instantanément de l'un à l'autre et, grâce à l'extension pandoc de Markdown, un débutant avec une heure de pratique peut générer un fichier \LaTeX{} qui ferait envie à un expert.

Pour les utilisateurs de R, la syntaxe Markdown est utilisable grâce au paquet R Markdown, alors que les utilisateurs de Python peuvent employer Pweave ou le « carnet de notes » (notebook) IPython.

Exemple (version R Markdown)

L'exemple précédent avec R Markdown devient :

## Résumé des données
Le _résumé à 5 nombres_ du jeu de données α est :
```{r}
summary(α)
```
On voit qu'__aucune saturation ne semble présente__...

Pour comparaison, la version précédente :

\subsection{Résumé des données}
Le \textit{résumé à 5 nombres} du jeu de données 
$\alpha$ est :
<<resume-jeu-alpha>>=
summary(α)
@
On voit qu'\textbf{aucune saturation ne semble 
présente}...

Petit comparatif

Les solutions suivantes permettent toutes à quiconque maîtrise déjà R, Python, Julia, d'être productif rapidement dans le cadre d'un travail « exploratoire » ou interactif :

Un inconvénient : ces approches sont « orientées script » et pas vraiment destinées à développer du code (même sans aller jusqu'à la programmation lettrée).

Le mode Org de l'éditeur GNU emacs combine les avantages de SageMath et la possibilité de faire de la programmation lettrée ; son seul inconvénient : il faut apprendre emacs...

Autre développement récent : les dépôts de données

Le chercheur qui travaille sur des données expérimentales (par opposition à des simulations) risque tôt ou tard d'avoir un problème lié à la recherche reproductible : comment rendre de gros jeux de données accessibles / téléchargeables par quiconque ? Heureusement, de nombreux dépôts publiques (et gratuits) sont apparus ces 5 dernières années :

Pour aller plus loin

Conclusions

Remerciements