Science reproductible
Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do.
Un outil et une méthode précieuse pour rendre intelligibles et reproductibles ses études. Un gain précieux en efficacité.
Outils
Notebook (jupyter), Rmarkdown, Quarto
Un peu d’histoire
knitr (2011), avec des dialectes , markdownrmarkdown (2015)quarto (2022)Histoire de rmarkdown par l’auteur de la librairie
quarto reprend la philosophie de rmarkdownquarto (pour la plupart)quartoVignettes
Les vignettes de package peuvent aussi être générées par quarto. Voir l’exemple du package quarto lui-même.
Paramètres du ‘bloc’ dans les accolades en rmarkdown, après #| en quarto.
Metadata du document : YAML
Multiples formats : html, PDF, MS Word, OpenOffice, ePub, Revealjs, PowerPoint, Beamer, et de nombreux autres
Documents, présentations, mais aussi ‘websites’ ou ‘books’
Exemple : ce cours est hébergé sur un site quarto. Les slides des cours sont aussi écrites en quarto avec revealjs, les sujets d’exercices en quarto - pdf.
Figure 1: Temperature and ozone level.
Liste complète des options de blocs de code avec knitr disponible ici
quarto
À utiliser aussi souvent que possible pour une analyse de données ou un projet de datascience.
source())R version 4.5.3 (2026-03-11)
Platform: x86_64-pc-linux-gnu
Running under: Ubuntu 24.04.4 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.26.so; LAPACK version 3.12.0
locale:
[1] LC_CTYPE=C.UTF-8 LC_NUMERIC=C LC_TIME=C.UTF-8
[4] LC_COLLATE=C.UTF-8 LC_MONETARY=C.UTF-8 LC_MESSAGES=C.UTF-8
[7] LC_PAPER=C.UTF-8 LC_NAME=C LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=C.UTF-8 LC_IDENTIFICATION=C
time zone: UTC
tzcode source: system (glibc)
attached base packages:
[1] stats graphics grDevices datasets utils methods base
other attached packages:
[1] ggplot2_4.0.2
loaded via a namespace (and not attached):
[1] vctrs_0.7.2 nlme_3.1-168 cli_3.6.5 knitr_1.51
[5] rlang_1.1.7 xfun_0.57 renv_1.1.8 generics_0.1.4
[9] S7_0.2.1 jsonlite_2.0.0 labeling_0.4.3 glue_1.8.0
[13] htmltools_0.5.9 scales_1.4.0 rmarkdown_2.30 grid_4.5.3
[17] evaluate_1.0.5 tibble_3.3.1 fastmap_1.2.0 yaml_2.3.12
[21] lifecycle_1.0.5 compiler_4.5.3 dplyr_1.2.0 RColorBrewer_1.1-3
[25] pkgconfig_2.0.3 mgcv_1.9-4 lattice_0.22-9 farver_2.1.2
[29] digest_0.6.39 R6_2.6.1 tidyselect_1.2.1 splines_4.5.3
[33] pillar_1.11.1 magrittr_2.0.4 Matrix_1.7-4 withr_3.0.2
[37] tools_4.5.3 gtable_0.3.6
Pour s’assurer de la reproductibilité, il faut pouvoir reproduire son environnement :
Un outil : renv
renvrenvvenv en Python.libPaths()
L’utilisation de renv facilite la gestion des versions et la configurations des libPaths()…
renv : workflowrenv::init() : pour initialiser un projet avec renvrenv::snapshot() : sauvegarder les références aux dépendances dans un fichier renv.lockrenv::restore() : pour retourner à l’état référencé dans le fichier renv.lockLimites
renv : avantages.libPaths()quarto : programmation littéraire. Utile pour les rapports, blogs, EDA… Et pour vous faire un ‘portfolio’ facilement !renv : gestion de l’environnement, un point essentiel de la reproductibilité des résultatsquarto.renv, avec beaucoup d’articles explicatifs.R avancé et introduction à Git | Science reproductible