# 1) Introduction : notes, carnet de notes, indexation et gestion de version 3 technos de Notebook : - jupyter - RStudio - Org-Mode 6 types de reproductibilité : - Reproductibilité Computationnelle - obtentions de mêmes résultats finaux tels que rapportés - reproductibilité « absolue » envisageable et souhaitable - Reproductibilité expérimentale ou « directe » - contrôle sur les conditions d’obtentions des données - les attentes sont sur les motifs de données résultant de l’expérience - utilisation de statistiques pour la validation de reproduction des motifs - Reproductibilité indirecte ou hypothétique - relatif aux recherches et activités scientifiques qui ont en commun d'être impossibles à standardiser complètement - Reproductibilité par expertise (expériences non-standard et objets de recherche rares - « l'expertise reproductible se définit comme la compréhension qu'un expérimentateur qualifié travaillant avec des\ méthodes similaires sur les mêmes matériaux à ce moment et cet endroit précis produirait des résultats similaires » - Observation Reproductible: Études de Cas Non-expérimentales - domaine des sciences de l’observation (ex. sociologie, radiologie) - expertise est clé dans l’observation « reproductible » - Recherche Non-Reproductible: Observation Participante - activités scientifiques où "l'idée même de reproductibilité est écartée au profit de la subjectivité, et d'une\ dépendance inévitable du contexte pour les résultats de recherche" **Les étiquettes et outils d’indexation :** Outils : - DocFetcher (logiciel d’indexation et de recherche) --> moteur de recherche de bureau - OrgMode --> possède des fonctionnalités d’étiquetage - Markdown --> possède une fonctionnalité de commentaire comme le XML - ExifTool --> utilitaire permettant d’accéder aux métadonnées des images **Aide markdown du mooc:**\ [Md rr-mooc cheat sheet](https://lms.fun-mooc.fr/courses/course-v1:inria+41016+self-paced/courseware/2bfe60a86fed4994b5493a220c38eb69/13f6fd96266746a0bd9d717a12f1f835/4?activate_block_id=block-v1%3Ainria%2B41016%2Bself-paced%2Btype%40vertical%2Bblock%4089c7893cb5aa4644b06569c65945d4d9) ## 2) La vitrine et l'envers du décor: le document computationnel ### 2.1) Exemples d'études récentes "discutées" RAS ### 2.2) Difficultés de reproduction des travaux de recherches #### Manque d'informations **sources et données** données non disponibles --> résultats difficiles à vérifier **choix** choix non expliqués --> choix suspicieux #### L'ordinateur, source d'erreurs **Logiciel "point&clic"** Les logiciels "point&clic" qui sont faciles d'utilisation mais dont le détail des calculs, des paramètres etc\ ne sont pas accessibles, où se qui se passe derrière est caché. Ces logiciels dont l'usage premier peut être détourné,\ ce qui crée de potentiels postes d'erreurs. **Tableurs, erreurs de programmation et de manipulation des données** Un exemple typique sont les tableurs excel et en particulier ceux, utilisant des macros. De plus, pour certaines valeurs,\ le comportement par défaut du logiciel peut les interprêter de mauvaise manière.\ Par exemple: - le nom commun d'un gêne MARCH1 interprêtée comme une date, - un identifiant de gêne interpêter comme un chiffre **Pile logicielle complexe** logiciels propriétaires ("boîte noire") dont on ne maîtrise pas le contenu et qui applique aveuglément des procédures de calcul\ et de transformation de données. **Bugs de programmation** Erreurs peuvent venir de programmes "maison" **Manque de rigueur et d'organisation** 1. Pas de Backup Stockage ne coûte plus rien, mais cela n'empêche que la sauvegarde des données est souvent mal assurée. 2. Pas d'historique En l'absence de mécanismes de gestion version, il est courant de remplacer par inadvertance d'anciennes données par de nouvelles.\ --> plus d'accès aux anciennes observations. 3. Pas de contrôle qualité Utilisation de plans d'expériences randomisées ou pré-étude pas systématiques\ Bonnes pratiques de revue de code, l'intégration continue rarement appliquées 4. Dimension culturelle et sociale Un article est une version simplifié et intelligible des résultats : "publicité"\ Une description haut-niveau est essentielle (permet de prendre du recul) mais elle est devenue la norme alors que le niveau\ de technicité de la recherche actuelle est bien trop élevé pour qu'il soit possible de donner dans un doc de 8 à 10 pages\ toutes les informations permettant de refaire les expériences et analyses. * Description du protocole expérimental souvent assez succinte, * Données généralement trop nombreuses pour être données in extinso.\ Elles sont souvent résumées au travers de quelques courbes. * Les traitements statistiques pour parvenir à ces courbes ne sont décrits \ que brièvement. Tracer toutes les informations et les rendre accessible --> investissement conséquent\ Si personne ne l'exige à quoi bon?\ Donner l'accès --> tout rendre public? N'est-ce pas risqué? Idées reçues * Faiblesses deviendraient évidentes Si je donne accès à tout --> résultats n'apparaîtront pas aussi parfaits que ce qu'ils étaient prétendus être. Risque d'être considéré\ comme un peu sale, pas assez rigoureux, que l'on dise que les résultats présentés ont été sélectionnés mais c'est la réalité \ et ce n'est pas un cas isolé. Dans un domaine où la réputation est essentielle --> plus d'intérêt à le montrer.\ Le cacher finira par paraître suspicieux et pourra nuire à la réputation. * Quelqu'un pourrait trouver une erreur Si je révèle tout, quelqu'un peut potentiellement trouver une erreur. --> tout le monde fait des erreurs mêmes des chercheurs de renom.\ Mieux vaut trouver une erreur afin de rendre les travaux correctes. * Quelqu'un pourrait en tirer un avantage à ma place Si je rends public mes données ou mon code, un risque est qu'un autre chercheur utilise mes données ou mon code pour écrire plusieurs\ articles alors que j'en aurais publier qu'un. --> si réutilisation, citation de votre travail est obligatoire. Article les plus cités : présentation de contributions méthodologique ou logiciels devenus essentiels dans un domaine.\ --> il ne faut pas négliger l'intérêt de donner l'accès à sa communauté.\ GitHub (à mi-chemin entre plateforme de dév et réseau social) --> sorte de \ carte de visite pour un développeur. Travaux avec une dimension éthique.\ Données potentiellement sensibles --> définitions des personnes habilitées\ à avoir accès à ces données et utilisation de techniques cryptographiques. ### 2.3) Le document computationnel Un tel document (comble le fossé entre l'auteur et le lecteur)\ permet de garder une trace afin :\ * __d'inspecter__ : * justifier pourquoi tel ou tel code est utilisé (auteur) * comprendre ce qui a été fait (lecteur) * __de refaire__ : permet de refaire les calculs et les analyses le plus simplement possible * 1er point : permet au lecteur de vérifier que les calculs sont corrects * 2ème point : permet de corriger des erreurs s'il y en a * 3ème point : permet à d'autres de réutiliser les travaux dans un autre contexte 3 outils possibles: * Jupyter * Rstudio/knitR * Org mode 1 seul document pour explications, code et résultats. Possibilité d'export. Jupyter --> plusieurs langages mais pas dans un même notebook (en fait c'est faisable mais compliqué) Rstudio --> dédié au langage R, possibilité de faire du python mais pas très ergonomique Org mode --> on peut faire cohabité différents langages mais la courbe d'apprentissage est plus élevé que pour les deux autres outils. Jupyter et Rstudio s'appuient sur le markdown et donc sur Pandoc et le style par défaut est très bien\ si l'on veut générer du html. Mais si besoin de générer un pdf avec un style particulier, pas forcément évident de configure Pandoc\ pour qu'il applique le style voulu. Avec OrgMode capacité à écrire directement du Latex. #### 2.4) Prise en main des outils Jupyter, Rstudio/knitr, Emacs/Org mode ##### a) Jupyter ``` %matplotlib inline ``` --> permet de faire en sorte qu'un graphique soit directement afficher dans le notebook ``` %lsmagic ``` --> permet de connaître plein de commandes très utiles **Pour exécuter des fragments de code R** D'abord chargement d'un module python permettant d'interpréter du code R ``` %load_ext rp2.ipython ``` et ensuite ``` %%R ``` D'autres langages sont possibles shell, perl (%%sh, %%perl) **Partage** --> possible en utilisant GitLab/Github\ --> sauvegarde au formt html, facilement transférable par mail par exemple **Exporter vers un docuement pour un article** Pour l'export, on peut contrôler la vsibilité de chaque cellule via l'utilisation du plugin Hide-code\ Si on veut un contrôle fin, il est possible: * d'insérer directement des commandes latex ou html (%%latex,%%html) * Personnaliser les feuilles de styles, les export de NBConvert via des commandes appropriées\ jupyter nbconvert --to mypackage.MyExporter notebook.ipynb ##### b) Rstudio/knitr ##### c) Emacs/Org mode ### 2.5) Travailler avec les autres Aides pour la préparation d'un document pour un journal ou pour une conférence\ [help_gen_doc_journal_or_conf](https://lms.fun-mooc.fr/courses/course-v1:inria+41016+self-paced/courseware/66bc811404b8481da5f794de54681c5e/358158d052744d239c7f43bd7bcc16b4/) ### 2.6) Analyse comparée des différents outils **Pour un cours ou un tutoriel**\ --> un notebook est parfaitement adapté, c'est un document facile à prendre en main et dynamique. **Pour un journal**\ Org mode est très intéressant, il permet d'avoir une organisation chronologique, d'utiliser des étiquettes.\ Les recherches sont facilitées grâce au mécanisme des étiquettes (permet de mettre des notes, des liens, du code) **Pour un cahier de Laboratoire**\ Org mode est également intéressant.\ L'organisation est cette fois sémantique. C'est un document dans lequel on indique les conventions d'organisation.\ 1ère section:\ * Explication d'accès aux informations sur telle ou telle machine * Scripts de conversion d'un format à un autre * Scripts de traitement * Fonctions les plus courantes, communes et facilement accessibles\ Section expériences, section analyses dans lesquelles on peut trouver une organisation plus chronologique. **Pour un article reproductible**\ Org mode est aussi puissant et permet de regrouper : * les codes sources, que l'on peut mettre à jour pour mettre à jour les figures du document, * du code latex, qui permet de maîtriser finement l'apparence de l'article généré