# Journal de bord du Mooc # Recherche reproductible : principes méthodologiques pour une science transparente # FUN-MOOC # novembre 2022 ## 1 - Module 1 : cahier de labo ### 1.1 - Différents procédés de prises de notes Quel support pour les notes ? Comment les organiser ? 1. pochette regroupant tous les développements ou dossier numérique 2. carnet de Humbolt : informations prises lors de l’observation puis notes écrites et triées a posteriori 3. du papier à l’informatique : même prise de notes mais facilité d’organisation. Comment passer de la note à la donnée initiale ? Importance de retourner à la donnée de base, mais ça reste difficile. 4. Méthodologie : Relevé des conditions de la mesure dans le cahier de manip ; relevé de l’évolution des observables ; relevé des observations faites. ### 1.2 - Historique de la prise de note - Volumen = rouleau de papyrus ==> mots attachés - Codex = papyrus reliés ==> repérage des rubriques par des couleurs - Canon Eusébien : références croisées entre des copies évangiles - Armoire de Placius et Leibniz - Méthode de John Locke : Réalisation d’un index en faisant autant d’entrée que de lettres de l’alphabet puis des sous-entrée avec les voyelles. Référencer ensuite les pages à partir de la premières lettre et première voyelle des mot-clés.==> Apprendre des anciens pour les supports papiers. ### 1.3 - Fichier texte et langage de balisage Ne pas confondre fichier texte et éditeur de texte. Fichier txt: coder en UTF-8 ==> format à privilégier. Limite : un fichier texte ne permet pas de mettre en évidence du texte ==> langage de balisage qui utilise des fichier source texte mais des logiciel spécialisé pour la visualisation Exple : HTML Idée : fichier de balisage léger qui soit facile à lire sans logiciel spécialisé. Exple : markdown, Wikitexte, Asciidoc, Restructured Text Facile de transformer du md en docx ou pdf. Tuto markdown : [Didactiel de Jean-Daniel Bonjour](https://www.jdbonjour.ch/cours/markdown-pandoc/) - section ‘# Titre‘ - sous section ‘## sous section’ - sous sous section ‘### sous sous section’ - `_italique_, __gras__ , --barré-- ...` - Un hyperlien `[lien affiché](adresse du lien)` - Commentaire `` - Insertion image ![legende](adresse de l’image sur internet ou sur l’ordinateur) - Liste à puces : ``` - element - element ``` - Enumération ``` 1. element 2. element ``` - Liste imbriquée ``` 1. element - element - element 2. element ``` Tuto Pandoc : [Page du projet](https://pandoc.org/) [Didactiel de Jean-Daniel Bonjour](https://www.jdbonjour.ch/cours/markdown-pandoc/) Conversion d’un langage de balisage léger vers un format docx, pdf, html - Conversion md to pdf : pandoc monfichier.md -o monfichier.pdf - Conversion md to html : pandoc monfichier.md -o monfichier.html - Conversion md to docx : pandoc monfichier.md -o monfichier.docx ### 1.4 - Gestion de version GITLAB Obj : assurer la pérennité Evolution des méthodes : Raturage ==> mode correction ==> moteur wiki dokuwiki (sauvegarde à la charge de l’utilisateur) ==> gestion de versions = dépôt github Interface Gitlab - Accès aux anciennes versions dans ‘History’ - Retrouver les fichiers contenant un mot : onglet search en haut à droite #### 1.4.1 - Notion d’historique dans Git Fonctionnalités de base : historique, synchonisation avec ordianteur distant et fusion de fichiers facilité. Notions de bases : - historique distribué - branche - conflit et fusion - ecosystème git : GitHub, GitLab Sur le serveur gitlab, pour voir l’ensemble des commit qui ont permis de créer un fichier, utiliser le bouton `history` ou `blame` Comandes de base : - `git clone` pour copier un projet en local à partir d’un serveur - `git add` pour conserver les moments clés. - `git commit` pour conserver un état stable - Les flèches --> indiquent une dépendance de la version n+1 qui dépend de la version n : vn <--vn+1 - `git diff v4..v8` compare 2 versions - `git checkout v6` permet de revenir à la version v6 - `git push` propage les modifications de la branche de travail sur le serveur #### 1.4.2 - Travail collaboratif avec git Collaborer = gérer un historique distribué = s’échanger des bouts d’historiques `git pull` permet de synchroniser sa version local avec celle du serveur . Si le serveur est simplement en avance, pull va simplement ajouter les modif existantes sur le serveur en local. Si le serveur comporte un historique (le push d’un autre utilisateur) qui n’est pas connu en local : un push direct n’est pas autorisé, il faut commencer par un pull et gérer les conflits éventuels. _Gestion d’un conflit_: Sur le serveur : visualisation des branches dans le menu à gauche `Repository` => `Graph` push d’une modification incompatible crée une erreur `pull` permet une visualisation des modifications à effectuer ``` <<<<<<<<<<<<<>>>>>>>>>>>>>>>>>SHA1du commit correspondant ``` Effectuer la modif Faire un commit puis push Bonnes pratiques : - privilégier beaucoup de petits fichiers plutôt que peu de gros fichiers - La moindre modification sur la même ligne crée un conflit - Eviter les modifications inutiles - Séparer les commits de fond et les commits de forme - git status pour voir où on en est - git diff pour repérer les modifications à commiter - git add pour ajouter certaines modifications - privilégier les petits commit logiques : éviter git commit -a - impossible de gérer des conflits de fichiers binaires ==> privilégier le format texte ### 1.4.3 - Ecosystème Git Notions : - Fork : nouveau dépôt qui est la copie d’un dépôt - pull request : soumettre une nouvelle version du dépôt aux développeurs du dépôt initiale Github est propriétaire qui rend le service payant pour les projets privés. Gitlab : logiciel libre Possibilité de déployer des instance Gitlab : Gitlab cnrs, Gitlab in2p3 Github : très grande visibilité mais hébergement possible à l’étranger. Exemple de logiciel pour travailler sur git: - Au jour le jour : JupiterLab-git - Utilisation plus pousséeGithub desktop, gitkraken, SmartGit ### 1.5 - Étiquetage et logiciels d’indexation Comment s’y retrouver dans ses notes : - Notes écrites : système de J. Locke - Fichier texte : outil rechercher - Notes fiches : index ==> impossible de gérer des documents de différents formats. #### 1.5.1 Moteur de recherche de bureau : DocFetcher Obj : trouver efficacement une info pertinence Ajout d’étiquette dans Markdown via les commentaires `` Les fichiers images contiennent des métadonnées : logiciel exiftool pour afficher les métadonnées ==> ajout de commentaire/mots-clés : `exiftool comment=":mot-clé:" fichier.jpg` (":" facultatif) Ouvrir DocFetcher clic droit sur la colonne de gauche pour pointer sur un dossier ==> popup --> texte brut  permet de traiter des fichiers md et org comme des fichiers texte Recherche d’une syntaxe : `":etiquette:"` #### 1.5.2 - Logiciel d'indexation de fichiers : ExifTool Pour visualiser les métadonnées d’un fichier : `exiftool image.jpeg` Pour visualiser page par page : `exiftool image.jpeg | less` Ajouter un mot clé (par exemple l’url de provenance de l’image) : `exiftool -comment=’’ :etiquette :’’ image.jpeg` Ajout d’une note : exiftool -comment=’’ :etiquette :’’ image.jpeg` ## 2 - Module 2 : document computationel ### 2.1 Les besoins de tracabilité Obj : améliorer la tracabilité d'un calcul 3 environnements : Jupyter, R studio, OrgMode Difficulté de reproduction des résultats : - Données non disponibles - Description du traitement de données ==> choix qui sont faits - Erreurs générés dans les logiciels (utilisation de la souris, copier-coller, utilisation de tableur ...) - utilisation d'une pile de logiciels dont des propriétaires - manque de rigueur et organisation - article = version simplifiée de la procédure. Les informations peuvent être tracées avec les bons outils. Tout rendre public ? - mise en évidences des faiblesses ==> vrai pour toutes les recherches - trouver des erreurs ==> possible et alors ? - d'autres pourraient en tirer des avantages ==> montrer ses travaux est une façon de prouver son travail - données sensibles ==> des solutions existent Bonnes pratiques : - logiciels et langages libres - utiliser du format texte - répliquer ses données sur des plateformes ouvertes et sûres - attention aux outils intuitifs. Nouveau paradigme : ouverture des données ### 2.2 Principe du doc computationel Obj : permettre la tranparence entre auteur et lecteur - Inspecter: justifier/comprendre - refaire : vérifier/corriger/réutiliser Principe : 1 seul document Exple : Notebook = texte (format md) + fragments de code python + résultats obtenus. Export dans un doc final ou certaines parties vont être mis au format texte. ### 2.3 - Prise en main des outils #### 2.3.1 Jupyter Création d'un nouveau notebook (en double-cliquant sur `Untitled1`) Par défaut les nouvelles cellules sont du code, mais on peut passer en markdown Insertion nouvelle cellule : `insert cell` Ajouter du code, l'exécuter Sauvegarder le document Ajouter `%matplotlib inline` pour ajouter un graphique en ligne Voir les commandes avec `lsmagic` Pour ajouter du code R `%%R` Pour ajouter du latex : `%%latex` Tous les résultats son stockés dans mon document. Pour partager avec d'autre, il suffit de commiter dans github Sinon export html Pour un article : contrôler la visibilté des cellules :view/celle toolbar/hide code` puis cocher les cases correspondantes