# Journal de bord du Mooc / Mooc's logbook ***Notes personnelles sur le Mooc de Recherche Reproductible.*** # MODULE 1 : CARNETS DE NOTES ? CAHIER DE LABORATOIRE ## Du fichier texte au langage de balisage léger *Mardi 11 mai à 21h (2h)* EDITEUR DE TEXTE : gedit (linux), notepad (windows) Les fichiers texte peuvent etre lus par des éditeurs de texte qui sont moins puissants que des traitements de texte, mais sont facilement reproductible et il est possible de les lire même des années plus tard quelque soient les versions Creation de langage de balisage (markup langage) : html Ils utilisent des fichiers source au format texe , offre un confort de lecture, nécessitent un logiciel « de rendu » dédié (navigateur internet) et parfois un editeur spécialisé. Langages aux balisages légers : type de langage de balisage avec syntaxe simple, conçu pour qu'un fichier dans ce langage soit facile a saisir avec un éditeur de texte simple facile a lire dans sa forme non formatée (sans logiciel dédié) → parfait pour prendre des notes structurées. Exemple : Markdown, wikitexte (utilisé par wikipedia), Asciidoc, RestructuredText (très employé par programmeurs Python) Choix de langage de balisage léger importe peu car il existe logiciels qui permettent de passer de l'un a l'autre. De plus possibilité de créer des pdf, word, html (formats plus sophistiqués)...a partir de markdown (via pandoc). Jupyter et Rstudio utililsent pandoc. Reference pour aller plus loin en markdon et pandoc : https://enacit.epfl.ch/cours/markdown-pandoc/ A noter : Gitlab permet de taper du markdown et de voir le rendu html, et de stocker plusieurs version du code. Remarkable est aussi un editeur markdown (sur windows et linux) ## Perennité et evolutivité des notes avec la Gestion de versions : *Jeudi 13 mai à 21h (2h)* Plateforme Gitlab créée dans le cours. Gitlab permet de créer des fichiers et une arborescence et de les partager. Faire une recherche dans Gitlab : On se met sur un réperetoire et on fait une recherche du mot que l'on souhaite en haut à gauche : cela affiche tous les repertoires/fichiers/contenu du fichier contenant ce mot. ### Git ; Github, gitlab : l'historique *Vendredi 14 mai à 19h (1h)* historique Git : créé pour développer linux : outil open source. N'est pas comme dropbox, car il faut faire des lignes de commandes a chaque fois pour syncroniser, savoir ce qu'on veut syncroniser, comment... Il y a des interfaces pour ne pas passer par lignes de commandes. Il faut identifier des « checkpoint » : moments clefs : on utilise **Gitadd** pour conserver les modifis et identifier des « groupes » de modification. Puis avec **Gitcommit** : on sauve la nouvelle version : ca s'ajouter à la branche. Si on a créé une version qui nous plait pas on peut repartir de celle d'avant : cela va arreter la branche et en faire partir une autre. En fait, cela fonctionne pas sur un seul fichier mais sur des projets (plusieurs fichiers). Chaque version du projet est identifié par un **SHA1**. Après on pourra comparer des versions : **git diff** avec les SHA1 des deux versions. **Git check out** : revient à l'état du répertoire quand on était dans la version ?. Cet historique est local. On peut utiliser la commande Guitpush pour propager ses modifications sur le serveur GuitLab. On ne transfère pas tout sur le serveur Guitlab, on peut choisir. Quand on travaille a plusieurs : on créé une plateforme sur le serveur Guitlab. Puis chacun fait un guitclone en local. Il propage ses modifications avec **Guitpush**, et récupère les modifications avec **Guit pull**. En général pas possible de faire un Guitpush si historique pas a jour en local, il faut d'abord faire un guitpull. Possibilité de conflits entre modificaitons, et possibilité correction avec un merge (fusion des modificaitons). Pas obligé de passer par le serveur, on peut passer direct d'un ordi a l'autre. Avantage : système résilient car tout le monde a une copie en local. Sur guitlab : acces a historique via la partie Graph Il vaut mieux eviter les conflits : ne pas avoir de gros fichiers et ne pas les changer dans tous les sens de manière inutile (ajouter des espaces...). Il faut faire des commit différents en modificaiton de forme et de fond (avec guit statut) : on peut faire des git commit de fond, et des guit commit de forme ; faire des petits commits. **Guit commit -a** : permet de tout commiter sans réfléchir. Diff et fusion impossible avec des fichiers binaires, il vaut mieux rester en format text. Commande : **guit log**: donne accès à l'ensemble des modification de l'historique. ***Conclusion : facilite beaucoup le travail collaboratif.*** ### Comment met on en place un serveur Guit Lab ? L'ecosysteme Guit. *Samedi 15 mai à 14h (1h)* Guit hub et guitlab sont des plateformes d'hébergement des projets collaboratifs, et fournissent des interfaces web d'accès à l'intégralité du contenu des projets et des historiques. En plus on peut utiliser markdown et visualiser en html, et on peut éditer.... Ces interface web permet de gérer les permissions sur le projets : on peut gere des utilisateurs avec différents droits (lecture/ecriture...). C'est une sorte de réseau social des développeurs : peuvent partager des commandes, on peut aussi identifier des bugs. On peut aussi faire de la revue de code : proposer des modificaitons (faire un fork : demander de faire une copie dans espace personnel ; puis proposer les modif : pull request) regarder les modifications proposés, et décider de l'assimiler ou pas. On peut aussi faire : integration continue : faire des séries de tests apres modifcaitons. Déverser dans les archives ; Zenodo, SWH Guithub :Logiciel propriétaire : si on veut un projet public, ou si on est étudiant : on peut créer des projets avec hébergement gratuits. Pour les entreprises : c'est payant. Guitlab : alternative libre : il y a une entreprise (guitlab), il y a une instnce guitlab.com : un peu comme guithub. Il y a deux versions de Guitlab : 1 version de la communauté (gratuite) et une version d'entreprise (en avance de quelques mois). Il y a aussi plusieurs guitlab : des universtié, de l'Inria. Si on veut une notorité publique dans le codage : aller vers guithub. Si projet avec données sensibles (confidentialité) : il vaut mieux un guitlab professionnel. ## Indexation : *Dimanche 16 mai à 13h (3h)* Indexation de plusieurs fichiers numériques peuvent être étiquetés (index). **DocFetcher** est un moteur de recherche de bureau facile d'emploi et fonctionne tres bien. On peut voir l'intérieur du fichier, et la recherche se fait a l'intérieur des fichiers. Probleme : il peut y avoir de tres nombreuses occurrences. Poiur éviter cela on peut créer les étiquettes. Ajouter des étiquettes sur markdown : Cela permet d'introduire des series de nombres d'identification sans que cekla ne soit visible. Sur une image : on peut avoir acces aux métadonnées. On peut ajouter un commentaire avec un mot clef « etiquette1 ». ##Exercice 1 # MODULE 2: LA VITRINE ET L'ENVERS DU DECOR/ LE DOCUMENT COMPUTATIONNEL ##Pourquoi reproductibilité est difficile? Les principales causes de l'impossibilité de retrouver les travaux de recherche: - Manque d'information importante: source des données, expliciter les choix (protocole experimental, quelles données conservées/écartées, quelle procédure statistiques et quelles hypothèses sous-jacentes). Cahier de laboratoire: essentiel. - Erreurs de calcul. Erreurs induites par les ordinateurs: 1) logiciels intuitifs (clique bouton) (tableurs sources d'erreurs (passage des numeriques en explosants) et difficile de suivre les traitements par les macros). Mais programmer soit meme n'est pas evident... - Manque de rigueur et d'organisation: suppression des comptes informatiques, mauvaise gestions de version, pas de backup, pas d'historique, pas de controle qualité pour les developpements de logiciels (revue de code, intégration continue) - Probleme culturel: l'article doit être court, données décrites brievement, traitement statistiques brievement exposés. Demande beaucoup de temps de tout classer. Et si cela n'interesse personne. Et si on met tout public: on risque de s'exposer à la critique ou de faire trouver des erreurs. Probleme de la réutilisation; quelqu'un peut réutiliser le code et les données que l'on a mis beaucoup de temps à mettre en oeuvre. Il faut changer de facon de penser: il faut montrer ce que l'on fait, qu'on le fait bien, et en donner les limites pour construire sa réputation. Les articles de méthodologie sont de loin les plus cités. Expliciter permet d'identifier les erreurs et de les corriger. Sur github, on a un identifiant développeur qui permet d'etre reconnu. Cas de données sensibles (ex: données médicales, info sur les enfants...): il convient de definir les personnes qui peuvent y avoir accès aux informations; **il existe des techniques cryptographyques assez facile d'acces pour que seules les personnes autorisées aient accès**. Adoption de format texte et de logiciel en code ouvert (R, phyton) permet d'assurer (csv, markdown,...). Eviter de stocker les données sur une seule plateforme. Attention aux plateforme de sauvegarde (confidentialité, business plan). ## Le document computationnel La science moderne: 1) Les données 2) la visualisation statistique/échanges/analyses 3) Publication Outil qui permet au lecteur de verifier que les calculs sont corrects, de compendre pourquoi, de réutiliser les travaux. Document compuationnel: Un article au format pdf avec titre, texte, un peu de code, des résultats numériques. Derriere se document se cache un notebook jupyter, document dynamique sur lequel on peut interagir. Texte au format markdown + zones de code, code executable (console python sous jacente), puis on peut transofrmer en markdown, puis en pdf ou autre. Dans le document final, on peut choisir de cacher ou pas le code/les resultats. On peut partager le document computationnel et/ou le document final. Différents outils: Jupyter, Rstudio/knitR, Org mode. Meme principe: 1 seul doc (explication.code.resultat); session et export. Différences: Jupyter et Rstudio utilisent du markdown, orgmode du format org Jupyter permet d'utiliser plusieurs languages mais pas dans un meme notebook: julia, python, R, ruby Rstudio: que R, on peut utiliser Python mais pas top. Interopérabilité meilleure pour org: mais plus difficile de maitriser org mode. Markdown peut poser parfois problemen pour certains style pdf, alors qu'avec org mode on peut ecrire directement en lateX. Module sur Rstudio: explication de l'utilisation de Rmarkdown et possibilité de créer des pdf, html et doc. On peut aussi faire du R et du latex en meme temps: Rsweave; et du Rhtml pour faire de l'html et du R. Possibilité aussi d'introduire du code python dans un Rmarkdown, mais les morceaux de codes s'exécutent indépendemment (donc pas très pratique pour détailler une procédure par exemple))