Les enfers de la recherche reproductible
Elles se présentent de nature diverse (non-homogéne) - colonne pas de même longueur - les données peuvent être des suites chronologique et des images, etc
Elles sont trop grosse -> besoin de les stocker au format binaire
Garder les métadonnées au format texte ! Pour rajouter des informations plus facilement. Ces metadonnées sont vitales pour une recherche reproductible.
Le boustime correspond à l’ordre d’encode au format binaire. Le petit-boutisme correspond à l’ordre croissant des valeur binaire (1,2,4,8,…) tandis que le grand boutisme correspond à l’ordre décroissant (…,8,4,2,1).
Ce boutisme peut changer en fonction du système d’exploitation ce qui pose des problème dans la reproductibilité.
Un stockage binaire doit spécifier le boutisme utiliser pour une recherche reproductible
Format binaires pour :
Deux format repondent à ces critères: 1. FITS (1981 et toujours à jours, dev par des astrophysiciens) Format assez général pour être utilisé dans plusieurs contextes (bibliothéque vatican)
structure:
manipulation:
2. HDF5 (dev par National Center for SuperComputing Applications, 5eme version) structure:
manipulation:
les vraies données:
Notebook long devient vraiment difficile à lire
Utilisation d’un workflow pour bien comprendre l’ensemble du code, avec représentation en graphe
Workflow
exemples:
L’usine à gaz des calculs coûteux Calcul interminable qui peuvent rendre le notebook inutilisable
l’horreur des dépendance
Pas de standard pour la gestion des éco-systèmes
gestionnaire de paquet:
Il faut controler l’environement dans lequel on travaille
sur VM ou conteneur
Conserver le bazar: capture automatique de l’environnement, CDE, ReproZip
Faire le ménage: partir d’un environnment vierge, installer que le nécessaire et l’expliciter, docker/singularity, guix/nix
conteneur: aucune bibliothéque de la machine sera utilisée
Probleme de repro FreeSurfer -> resultat different entre windows/linux/!= os mac
orgmode aussi
outil à dev rapide
ce restreindre a ce qui est maitrisable (c / cpp)
L’archivage
Gestion de l’environnement - périnité de l’accés à dockerhub, nix repo, code ocean ? - une fois environnement gelé, quelle est la pérennité d’une VM, d’une image docker ?
Concerver le plus d’info possible en automatisant - logiciel, version, procédures d’installation
a+b
-> arrondi(a+b)
arrondi(arrondi(a+b)+c) != arrondi(a + arrondi(b+c))
exemple avec la simulation d’une goutte d’eau avec un ou quatre processeur
Génération de nomnbre aléatoire:
graine -> état 1 -> nbr 1
-> état 2 -> nbr 2
-> ...
La reproductibilité:
En python:
import random
random.seed(123)
assert random.random() == valeur aléatoire 1
assert random.random() == valeur aléatoire 2
assert random.random() == valeur aléatoire 3