Bruno Rodrigues, responsable de la production de statistiques et de la stratégie des données du Ministère de l’Enseignement supérieur et de la Recherche du Grand-Duché du Luxembourg
Capacité de retrouver exactement les mêmes résultats si je refais une analyse
Mais pourquoi?
Reproduction des résultats à la demande (audit, mise à jour…)
Reproduction des résultats d’une analyse passée
(Travailler sur un environnement immutable)
En supposant que j’ai le script original et les données: quel est le problème?
Voici ce qui peut influencer la reproductibilité d’une analyse:
Source: Peng, Roger D. 2011. “Reproducible Research in Computational Science.” Science 334 (6060): 1226–27
R < 3.6 (set.seed(1234)
)
[1] 2 6 5 8 9
R >= 3.6 (set.seed(1234)
)
[1] 10 6 5 4 1
Impact réel sur des publications utilisant R < 3.6! (projet de recherche en cours)
Généralement pas un problème, mais Neupane, et al. 2019:
While preparing a manuscript, to our surprise, attempts by team members to replicate these results produced different calculated NMR chemical shifts despite using the same Gaussian files and the same procedure outlined by Willoughby et al. […] these conclusions were based on chemical shifts that appeared to depend on the computer system on which step 15 of that protocol was performed.
Works on my machine!
Code source (no-code exclu par défaut!) et données disponibles
Langage de programmation (à la version près!) utilisé disponible
Librairies (et autre dépendances, à la version près!) utilisées disponibles
OS utilisé disponible
Disponible: possible d’utiliser, de partager et de ré-utiliser sans restrictions
renv.lock
renv.lock
(lien)Vraiment simple à utiliser, permet d’avoir une librairie par projet. Voici comment générer un renv.lock
une fois l’analyse terminée:
Restaurer la librairie dans le futur avec:
options(repos = c(REPO_NAME = "https://packagemanager.posit.co/cran/2023-06-14"))
{renv}
: solution idéale{groundhog}
, {rang}
: solution si pas de renv.lock
disponibleSolution: ne partagez pas un script, partagez votre ordinateur!
Dockerfile
:```
FROM ubuntu:latest
CMD echo "Hello, World!"
```
docker build -t hello .
docker run --rm -d --name hello_container hello
Hello, World!
Une image Docker c’est:
une base Linux (souvent Ubuntu)
toutes les dépendances nécessaires
tous les scripts nécessaires
la possibilité de l’exécuter sous forme d’un containeur sur n’importe quel OS
Exemple ici
FROM rocker/r-ver:4.2.2
Image basée sur Ubuntu avec R 4.2.2 du projet Rocker téléchargée depuis Docker Hub
renv.lock
: possible de créer le Dockerfile ensuiterenv.lock
!{targets}
, packagez votre code {fusen}
, gestion de versions avec Git et Github