Commit 82da8007 authored by Martin DAVY's avatar Martin DAVY

update journal module 3 et debut du journal module 4

parent 8067913e
......@@ -169,8 +169,80 @@ pre code {
<div id="module-3-la-main-à-la-pâte-une-analyse-réplicable" class="section level1">
<h1>Module 3 : La main à la pâte, une analyse réplicable</h1>
<div id="pouet" class="section level2">
<h2>pouet</h2>
<div id="introduction" class="section level2">
<h2>0. Introduction</h2>
<div id="objectifs" class="section level3">
<h3>Objectifs</h3>
<ul>
<li>Apprendre à réaliser une analyse de données de façon reproductible et traçable</li>
<li>Maitrîser quelques bonnes pratiques pour la préparation des documents computationnels</li>
</ul>
</div>
</div>
<div id="une-analyse-réplicable-cest-quoi" class="section level2">
<h2>1. Une analyse réplicable, c’est quoi ?</h2>
<div id="dans-une-analyse-traditionnelle" class="section level3">
<h3>Dans une analyse traditionnelle</h3>
<ol style="list-style-type: decimal">
<li>concentre sur les résultats</li>
<li>montre simplement un résumé méthodologique des méthodes utilisées</li>
<li>discussion pour exposer entre autres les conclusion de cette analyse</li>
</ol>
</div>
<div id="dans-une-analyse-réplicable" class="section level3">
<h3>Dans une analyse réplicable</h3>
<ol style="list-style-type: decimal">
<li>présentation des résultats</li>
<li>fournir le code qui à permit de génèrer ces résultats avec un explication détaillée du code et des choix fait</li>
<li>discussion (identique à l’analyse traditionnelle)</li>
</ol>
</div>
<div id="pourquoi-faire-réplicable-alors-que-cest-plus-deffort" class="section level3">
<h3>Pourquoi faire réplicable alors que c’est plus d’effort ?</h3>
<ul>
<li>Facile à refaire si les données changent</li>
<li>facile à modifier</li>
<li>facile à inspecter et vérifier (plus de <strong>confiance</strong>)</li>
</ul>
</div>
</div>
<div id="etude-de-cas-lincidence-de-syndromes-grippaux" class="section level2">
<h2>2. Etude de cas : l’incidence de syndromes grippaux</h2>
<p>Présentation du jeu de données qui va servir comme exemple dans ce module</p>
<p>Données qui viennent du réseau sentinelles</p>
<p>Ne pas supprimer les lignes vides directement dans le fichier texte, pas de modification à la main Tout doit se faire dans le code</p>
<p>La date (en semaine) est au format ISO8601 dans le fichier:</p>
<blockquote>
<p>il y a deux façons différentes de procéder : on peut donner l’année, le mois, et le jour du mois, ou on peut donner l’année, la semaine, et le jour de la semaine. Le 8 août 2018 peut donc être écrit 2018-08-08 ou 2018-W32-3, car il s’agit du troisième jour (mercredi) de la semaine 32 de l’année 2018.</p>
</blockquote>
</div>
<div id="b.-importer-les-données-avec-rstudior" class="section level2">
<h2>3B. Importer les données avec RStudio/R</h2>
<ul>
<li>lecture des données directement depuis la <strong>source</strong> (url)</li>
<li>Faire attention aux données manquantes avant l’analyse</li>
</ul>
</div>
<div id="b.-vérification-et-inspection-avec-rstudior" class="section level2">
<h2>4B. Vérification et inspection avec RStudio/R</h2>
<ul>
<li>Pré-traitement des données
<ul>
<li>Adapter aux conventions des logiciels</li>
<li>Faciliter l’analyse</li>
</ul></li>
<li>Vérifier autant que possible
<ul>
<li>inspection visuelle</li>
<li>code de validation</li>
</ul></li>
</ul>
</div>
<div id="b.-questions-et-réponses-avec-rstudior" class="section level2">
<h2>5B. Questions et réponses avec RStudio/R</h2>
<p>Une analyse réplicable doit contenir <strong>toutes les étapes</strong> de traitement des données sous une forme <strong>exécutable</strong>.</p>
<p>Il est important d’<strong>expliquer</strong> tous les choix qui peuvent influencer les résultats.</p>
<p>Ceci nécessite d’exposer beaucoup de <strong>détail techniques</strong>, parce que c’est à ce niveau qu’on fait le plus d’erreur.</p>
</div>
</div>
......
......@@ -58,4 +58,4 @@ Une analyse réplicable doit contenir **toutes les étapes** de traitement des d
Il est important d'**expliquer** tous les choix qui peuvent influencer les résultats.
Ceci nécessite d'exposer beaucoup de **détail techniques**, parce que c'est à ce niveau qu'on fait le plus d'erreur.
\ No newline at end of file
Ceci nécessite d'exposer beaucoup de **détail techniques**, parce que c'est à ce niveau qu'on fait le plus d'erreur.
This source diff could not be displayed because it is too large. You can view the blob instead.
# Module 4 : Vers une étude reproductible, la réalité du terrain
## 0. Introduction
### Objectifs
- Repliquer le travail de quelqu'un d'autre
- Comprendre les difficultés techniques qui se présentent lors du passage de l'exercice à la vraie vie
- Etudier quelques pistes de solutions
**Les enfers** de la recherche reproductible
- L'enfer des données
- L'enfer du logiciel
- L'enfer du calcul
## 1. **L'enfer des données**
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 :
- travailler sur de grosse données de nature différentes
- stocker les métadonnées et les données
- un boutisme fixé
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:
- un ou plusieurs segments: Header/Data Units (HDUs)
- contitution HDU:
- une en-tête (header unit)
- données (data Unit) : optionnelles
- en-tête = paires mots clés / valeurs -> métadonnées
- données tableaux binaire (une à 999 dimension) ou tables (texte ou bianire)
manipulation:
- bibliothéque C
- PyFITS pour python
- FITSio pour R
**2. HDF5 (dev par National Center for SuperComputing Applications, 5eme version)**
structure:
- ressemble à une arboraissance de fichier
- élément structurant est le *group* (répertoire) qui contient un ou plusieurs *dataset* (fichier)
- les *group* peuvent être imbriqués
- pas de structure imposé pour les métadonnées
- idem pour les données (on peut y stocker un article)
manipulation:
- bibliothéque C plus compliqué que celle pour le format FITS car le format HDF5 est plus "souple"
- bibliothéque vient avec l'application HDFView (codé en java) pour l'exploration
- h5py pour python
- h5, hdf5r et rhdf5 pour R
### L'archivage
- zenodo -> cern
- figshare -> privé
### conclusion
les vraies données:
- grosse et problème de structure
- complexes et ont besoin de métadonnées
- Format FITS et HDF5 sont des solution de formatage de ces données
- En compléxité et fléxibilité: FITS < HDF5
- archivage pour stockage pérenne et accessible
## L'enfer du logiciel
### Passage à l'échelle : les codes complexes
Notebook long devient vraiment difficile à lire
- un vrai plat de spaghettis
- pas de vision d'ensemble
- interaction entre plusieurs langages = **danger**
Utilisation d'un workflow pour bien comprendre l'ensemble du code, avec représentation en graphe
**Workflow**
- vue de haut niveau plus claire
- composition de codes et mouvements de données explicites
- partage, réutilisation, et exécution plus sûre
- le notebook en est une forme à la fois appauvrie et plus riche
- pas de façon simple de passer d'un notebook à un workflow
exemples:
- galaxy, kepler, taverna, pegasus, collective knowledge, vistrails
- **légers**: dask, frake, swift, snakemake, makefile...
- **hybrides**: SOS-notebook, ...
**L'usine à gaz des calculs coûteux**
Calcul interminable qui peuvent rendre le notebook inutilisable
- jupyter et les supercalculateurs : en dev
- checkpoint et cache
- workflow permet de passer à l'échelle (checkpoint naturel)
### Passage à l'échelle: les environnements complexes
l'horreur des dépendance
Pas de standard pour la gestion des éco-systèmes
gestionnaire de paquet:
- linux: apt, rpm, yum
- macOS X: brew, McPorts, Fink
- Windows : Chocolatey, scoop
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
### l'épreuve du temps
Probleme de repro FreeSurfer -> resultat different entre windows/linux/!= os mac
orgmode aussi
outil à dev rapide
- évolution rapide et peu poser problème
- besoin de vérifier la reconstructibilité et la fonctionnalité de ces environnements (intégration continue et test de non régression)
ce restreindre a ce qui est maitrisable (c / cpp)
L'archivage
- git (hub, lab) stable mais pérenne ? code space fin a cause de pirate
- software heritage
- hal
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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment