* Dans une analyse réplicable, les codes sont fourni ainsi que les calculs.
* Donc plus facile a vérifier et refaire
## Etude de cas
* Toutes modifs doit pouvoir être refaite !
<!-- :function: -->
<!-- :ressource: -->
* Here are two useful functions:
* `all(diff(data$date) == 7)` : Functions diff look at the difference between iteration and all look at wether the values are true for an entire vector (here all the differences)
* `with(tail(data, 200), plot(date, inc, type="l", xlab="Date", ylab="Incidence hebdomadaire"))` : Here the function with evaluate an expression within a constructed environement from data. (Here from the end of the dataset. )
# Module 4 La réalité du terrain
## L'enfer des données
* Les données sont diverses et volumineuse
* Souvent pas d'observations pour toutes les variables a chaque pas de temps (= colonnes différentes longueur).
* Format texte => Format binaire. pour plusieurs raisons.
* Garder les métadonées du format texte.
* Problème du boutisme (petit ou grand à spécifier)
* FITS et HDF5 => Deux formats binaires.
* FITSio avec R ; 3 paquets avec R.
* Comment archiver les données car Git pas bien adapté.
* Zenodo ou Figshare permettent de déposer ses données (au format binaire par exemple, mais pas de contrainte)
## L'enfer du logiciel
* Passage à l'échelle (plus gros code, plus de données...)
* Org mode permets d'avoir une meilleur vue (structure) mais quand même.
* Workflow. La représentation en graph permet d'avoiur une vu d'ensemble plus claire.
* Pas de façon simple/mature de passer d'un notebook à un workflow
* Code exéuté de manière fonctionnelle.
* Notebook plus séquenciel. Workflow permets explication parallèle.
* Exemples: Galaxy, Kepler, Taverna, Pegasus...
* Légers: dask, **drake** (spécial pour R), swift, snakemake...
* Hybrides: SOS-notebook
* Checkpoint et cache
* Supercalculateur
* Environnement complexe ....
* dépendances... => Sur macOS => brew gestionnaire de gestion de paquets (comme apt pour linux).
* Environnement contrôlé:
* Machine virtuelle ou conteneur (docker)
* Conserver le bazarre: CDE, ReproZip: figer un environnement et le partager avec un collègue. Mais figé.
* Ou faire le ménage: Docker/Singularity, Guix/Nix. Installer juste le nécessaire et l'expliciter.
* L'épreuve du temps.
* Python 2 et 3
* Différence entere version de mac et des calculs. Ou entre mac et windows.
* => Intégration continue pour tester la reconstructibilité et fonctiuonnalité => Outil [popper](https://getpopper.io/)
* Archivage : Software Heritage; HAL
* Gestion des environnements: dockerhub, nix, repository ... code clean.
<!-- outils -->
## L'enfer du calcul
* Problème des arrondi implicite dans chaque opérations
* Importance des ordres des opérations donc. Compilateur changent cet ordre !
* Compilations peut être rendue reproductible.
* Calcul parallèle => adapter l'ordre des opérations. Minimiser son impact est un sujet actuel.