1.3 Premier projet

Passons maintenant à la pratique. Lisez la suite de ce module lorsque vous le préparez d’avance chez vous. Cependant, nous réaliserons le projet suivant sur le nuage de points ensemble en présentiel.

1.3.1 GitHub Classroom

GitHub Classroom est une extension de GitHub. Rappelez-vous, l’une des premières étapes que vous avez réalisées dans le cadre de ce cours a été de créer votre compte GitHub. Grâce à GitHub, vous allez pouvoir sauvegarder vos travaux dans le Cloud, les partager et collaborer.

GitHub Classroom facilite le travail dans le contexte d’exercices de niveau 3 ou de niveau 4 (les projets individuels et en groupes) à réaliser dans le cadre du cours. Vous serez donc amenés à créer et éditer des projets issus de GitHub Classroom pour réaliser vos exercices. Vos projets seront privés. Seuls vous-mêmes et vos enseignants aurez accès à ces projets, mais vous pourrez aussi les rendre publics, si vous voulez valoriser votre travail de manière plus large.

L’illustration ci-dessous vous montre la boîte d’information qui vous permet d’initier votre projet. Cette boîte se trouve à la fin de ce module 1. Soyez vigilant quant à la date limite pour terminer le projet.

Attention, si vous n’êtes pas reconnu, vous ne pourrez pas initier votre projet et vous serez renvoyé vers une page comme celle ci-dessous. Vous devrez alors vérifier votre identification dans le site du cours (page d’accueil accessible à partir de l’entrée de menu “Home” en haut de page) avant de pouvoir accéder à votre projet.

1.3.2 GitHub

GitHub est un réseau social permettant de sauvegarder vos projets dans le “Cloud”, les partager et collaborer avec d’autres personnes. Les utilisateurs peuvent se regrouper sous une organisation afin de faciliter la collaboration. Ce réseau social a la particularité d’être centré sur les projets et utilise un gestionnaire de version de projet nommé Git (nous aborderons Git plus loin dans ce module). Ce nom provient de l’association “Git”, le gestionnaire de version et “Hub” relatif au réseau.

Découvrons un projet qui s’intéresse à la manipulation de tableau de données (filtrer des lignes spécifiques, calculer de nouvelles colonnes, trier le tableau en fonction d’une colonne spécifique…). Nous utiliserons ce projet dans le cours. Le projet dplyr est partagé par l’organisation tidyverse. Il va nous permettre d’aborder quelques aspects de GitHub. Nous nous attardons uniquement sur les éléments clés dans le cadre du cours.

À vous de jouer !

Cliquez sur les symboles + pour découvrir les parties importantes de la page principale d’un projet GitHub

h5p

Ce projet héberge une multitude de fichiers que vous ne devez pas comprendre pour le moment ;). 7112 “commits” y ont été réalisés (au moment où la capture d’écran a été faite : le projet a évolué depuis et les nombres cités ne sont certainement plus d’actualité par rapport au site aujourd’hui). Pour le moment, retenez qu’un “commit” est un état de sauvegarde du projet. Ce projet traite de la manipulation de données. Un site Web lui est associé dplyr.tidyverse.org pour en expliquer le contenu. Un grand nombre de contributeurs ont participé à ce projet (plus de 240). Un fichier README.md sert de page de présentation.

En haut de la page, on a les différentes sections du site : Code, Issues, Pull requests, Actions, Security et Insights (elles ne seront pas toutes détaillées ici).

Dépôt dplyr de l’organisation tidyverse dans GitHub
Dépôt dplyr de l’organisation tidyverse dans GitHub

Lors d’un travail en équipe, vous allez vous poser des questions et avoir envie d’échanger vos idées. GitHub met à votre disposition un espace dédié à la discussion et à la collaboration. Il s’agit des Issues. La section Issues permet de mettre en avant un problème ou une idée dans le but d’améliorer ce projet. Une issue est un espace de discussion et de collaboration centré autour d’une question. Par exemple, le projet dplyr a 70 issues ouvertes et 4281 issues fermées. On peut en déduire que 70 idées ou bogues sont en cours de correction ou de réflexion et que 4281 sont considérés comme terminés. Ce projet est assez dynamique.

Quand vous aurez un problème ou une idée, utilisez donc les issues pour discuter avec vos encadrants ou vos collaborateurs. Vous y accédez à partir de bandeau rouge au-dessus de chaque page du cours.

À vous de jouer !

Testez vos nouvelles connaissances en répondant à la question ci-dessous.

h5p

GitHub n’est pas le seul réseau social centré sur Git. D’autres réseaux équivalents existent comme Gitlab ou Bitbucket. Cependant, nous utiliserons GitHub ensemble, sachant que les notions apprises ici seront réutilisables ailleurs.

1.3.3 Projet RStudio

Démarrez votre SciViews box dans Saturn Cloud et affichez la fenêtre de RStudio maintenant (si vous ne l’avez pas encore installée, cliquez sur le bouton bleu RStudio en haut à droite de cette page pour voir les explications d’installation). RStudio permet de cloner (faire une copie locale sur votre ordinateur) directement un projet disponible sur GitHub en quelques étapes comme ci-dessous.

Des explications détaillées se trouvent dans l’annexe B.2.5 qui présente deux méthodes différentes pour cloner votre projet GitHub dans RStudio. Vous allez terminer ce module en réalisant votre premier projet individuel en science des données.

RStudio permet de gérer des projets efficacement. Un projet va regrouper l’ensemble des jeux de données, des blocs-notes, des rapports, des présentations, des scripts d’une analyse généralement en relation avec une ou plusieurs expériences ou observations réalisées sur le terrain ou en laboratoire. Il est normal que tous les éléments d’un projet ne vous soient pas encore familiers. Nous allons découvrir cela tout au long du cours de science des données.

À vous de jouer !

Observez les deux images et tentez de repérer chaque différence entre les deux interfaces, l’une hors projet, et l’autre dans un projet nommé Z01Ia_24M_scatterplot-arthurpeeters. Tentez de trouver les quatre différences avant de lire la section suivante.

Déplacez le curseur de gauche à droite pour comparer l’interface de RStudio hors projet (à gauche) et avec un projet ouvert (à droite).

h5p
  1. Dans la barre d’outils supérieure, on passe de Projet (Aucun) vers Z01Ia_24M_scatterplot-arthurpeeters. On peut donc facilement repérer si l’on est dans un projet ou non, et si oui, quel est son nom.

  2. Le panneau en haut à droite change et de nouveaux onglets sont présents, dont un nommé Git qui vient s’ajouter, mais uniquement si les versions du projet sont gérées par Git (que nous découvrirons dans la suite de ce module).

  3. Le panneau en bas à droite contenant l’onglet Fichiers change de dossier pour afficher le dossier de base du projet. Dans ce dossier, nous retrouvons obligatoirement un fichier à l’extension .Rproj ainsi qu’éventuellement un second, .gitignore. D’autres fichiers sont présents que nous découvrirons par la suite.

  • Z01Ia_24M_scatterplot-arthurpeeters.Rproj : À la base d’un projet RStudio, on retrouve un fichier à l’extension .Rproj. Ce fichier est placé automatiquement par RStudio. Il contient les paramètres de configuration de votre projet. Il ne faut pas le modifier soi-même. Il est utile aussi pour repérer tout de suite que l’on se trouve dans un dossier de base d’un projet RStudio.
  • .gitignore : Ce fichier permet de spécifier les fichiers que l’on souhaite exclure du gestionnaire de version, par exemple, les gros fichiers de jeux de données ou bien des documents.

1.3.4 Gestionnaire de version

Nous nous sommes intéressés à la partie collaborative de GitHub. Nous avons exploré la structure d’un projet et les outils de discussions que sont les issues. Nous allons maintenant nous intéresser à Git, le gestionnaire de version de projet utilisé par GitHub et par RStudio.

Lors de la rédaction d’un court document ou de travaux un petit peu conséquents, comme un travail de fin d’études, une publication scientifique ou un rapport volumineux, on se retrouve rapidement avec plusieurs fichiers correspondants à des états d’avancements du travail :

  • TFE_final
  • TFE_final1
  • TFE_final2
  • TFE_final3
  • TFE_final…
  • TFE_final99

On aura tendance à tout garder dans différents fichiers afin de ne rien perdre d’important. Cette pratique, bien que très courante, comporte le gros désavantage de prendre énormément de place sur le disque de votre ordinateur et de n’être pas pratique. Les questions suivantes peuvent se poser :

Que se cache-t-il dans la version TFE_finalX ? Après un mois sans travailler sur le fichier, seriez-vous encore capable de faire facilement la différence entre TFE_final2 et TFE_final3 ?

Un logiciel comme Git vous offre une solution professionnelle pour gérer vos fichiers au sein d’un projet. Pour que vous vous fassiez une idée plus précise, observez le gif animé juste en dessous. Un fichier urchin_notebook.qmd est ouvert dans la zone d’édition (en haut à gauche) à partir de l’onglet Fichiers (en bas à droite). Le nom de l’auteur est ensuite inséré dans le document. Une fois le document sauvegardé en cliquant l’icône bleue dans la barre d’outils d’édition, on retrouve dans l’onglet Git le nom du fichier modifié. Le gestionnaire de version va suivre toutes les modifications apportées aux fichiers au sein du projet (matérialisé par un dossier dans votre machine). Ce dossier se nomme un dépôt (repository en anglais).

Si vous sélectionnez l’onglet Git, vous verrez une barre d’outils en haut du panneau correspondant. Chaque bouton de cette barre d’outils donne accès à des fonctionnalités de Git ou de GitHub. Nous allons en découvrir une partie à présent.

Les deux premiers boutons, Diff et Commit, ouvrent la même nouvelle fenêtre destinée à l’utilisation de Git/GitHub.

En bas de cette fenêtre, nous allons suivre les modifications apportées à nos documents. Dans notre exemple, il n’y en a qu’un seul : le nom d’auteur en ligne 3 de urchin_notebook.qmd (en vert pour les parties de texte ajoutées) à la place de trois tirets (en rouge pour les éléments supprimés ou remplacés). La liste des fichiers modifiés se trouve en haut à gauche de la fenêtre (un seul également). Comme vous pouvez vous en rendre compte, Git permet de suivre finement chaque modification d’un document.

Le logiciel Git permet de faire des points de sauvegarde de votre projet. Cela s’appelle réaliser un commit. Pour ce faire, vous devez indexer les fichiers que vous souhaitez sauvegarder. Cette étape se réalise en sélectionnant le fichier urchin_notebook.qmd dans notre exemple. Vous devez écrire aussi un court message de validation qui fournit une description des modifications apportées dans ce commit.

Il ne reste plus qu’à cliquer sur le bouton “Commit” pour finaliser ce point de sauvegarde. Vous pouvez observer ce qui se passe dans le gif animé juste en dessous. Une fois l’opération terminée, des informations sont affichées, comme le nombre de fichiers modifiés inclus dans ce commit.

Une version de notre dépôt est également présente en ligne dans GitHub. À présent, il va falloir synchroniser les deux versions. Pour ce faire, nous vous conseillons de toujours commencer par rapatrier localement les changements réalisés dans le dépôt GitHub distant. Cette étape se nomme un pull. Vous pouvez cliquer sur tirer (une flèche bleue vers le bas). Elle sera cruciale lors d’un travail à plusieurs. Sur l’illustration suivante, vous pouvez observer que vous êtes à jour (le message “Already up to date” apparaît).

Enfin, vous allez envoyer vos changements locaux vers la version sur GitHub. Cette étape se nomme un push. Il s’agit de la flèche verte vers le haut “Poussez”. Plusieurs commits peuvent être envoyés avec un seul push. Lisez toujours le message qui s’affiche à la fin de l’opération pour vous assurer que l’envoi a pu être réalisé sans erreurs.

En cliquant sur “Historique”, vous pouvez suivre la progression des commits au cours du temps. Sur le gif animé suivant, on observe trois commits successifs.

Le logiciel Git remplace les nombreuses copies d’un même fichier par différents états de votre document ou dossier, que l’on peut représenter schématiquement comme ci-dessous (chaque boule bleue représente une version enregistrée dans le système et les flèches indiquent d’où provient chaque version et où elle est utilisée ensuite) :

Représentation de la gestion de fichiers avec Git
Représentation de la gestion de fichiers avec Git

Sur ce schéma, le flux est linéaire. Pour enregistrer une nouvelle version de votre document, vous effectuez un commit accompagné d’un message expliquant les modifications apportées.

Le gestionnaire Git peut être couplé à un hébergement sur le Cloud, soit pour simplement faire un backup de nos projets, soit pour pouvoir échanger et collaborer. Nous utilisons GitHub à cette fin dans le cours. Lorsque l’on travaille seul avec GitHub, l’évolution de notre projet ressemblera au schéma ci-dessous :

Représentation des versions successives d’un projet avec GitHub.
Représentation des versions successives d’un projet avec GitHub.

En bleu, les différentes versions locales de notre projet. En orange, les états modifiés de la version du projet sur GitHub. Les flèches indiquent le sens de la synchronisation.

Vous venez d’apprendre le B-A-BA de la terminologie nécessaire à la bonne compréhension de Git et GitHub :

  • dépôt ou repository : espace de stockage sous gestion de version Git.

  • commit : enregistrer une version du projet.

  • clone : créer un double local d’un dépôt GitHub.

  • push : envoyer ses modifications locales vers le dépôt GitHub.

  • pull : rapatrier les modifications que les autres utilisateurs ont réalisé dans le dépôt GitHub vers sa propre version locale.

Ceci n’est qu’une explication très succincte. Vous trouverez plus de détails dans les liens ci-dessous et dans les modules suivants.

Pour en savoir plus

1.3.5 Quarto/R Markdown

Le fichier édité dans la section précédente était un fichier Quarto qui a une extension .qmd5. Un fichier R Markdown est caractérisé par l’extension .Rmd. Ces deux formats sont très similaires, Quarto étant la version plus récente de R Markdown. Tous deux sont développés et maintenus par la même société (Posit). À partir d’ici, nous indiquerons Quarto/R Markdown lorsque la phrase s’applique indifféremment aux deux formats. Donc, Quarto/R Markdown permet de combiner le langage Markdown avec du code R, voire du code dans d’autres langages comme Python, Julia, SQL… Ces zones contenant du code exécutable en R ou autre s’appellent des chunks, ou morceaux dans l’interface RStudio en français (mais nous utiliserons préférentiellement le terme anglais dans cet ouvrage).

Lorsqu’on rédige un document, on perd beaucoup de temps à décider de l’interligne, de choisir la taille et la police… bref au niveau de la mise en page. On peut diviser la rédaction d’un document en deux grandes étapes : le fond et la forme. Nous vous proposons un outil pour booster votre productivité (et donc pour gagner du temps) avec Markdown. Dans un premier temps, nous allons nous intéresser uniquement au fond. Ensuite, nous déterminerons comment le document sera mis en forme.

Des “balises” spéciales Quarto/R Markdown vont marquer les différentes parties de texte lors de l’écriture du fond qui seront rendus différemment lors de la mise en page (la forme). Par exemple, une ligne qui commence par un ou plusieurs dièses (# encore appelé “hashtag”) sert à indiquer un titre de niveau équivalent au nombre de dièses.

Donc, un document R Markdown/Quarto est constitué d’une succession de zones de texte Markdown et de chunks contenant du code. Le passage de zone Markdown à zone de code et inversement se fait avec des balises particulières :

  • en entrée de chunk R : ```{r} seul sur une ligne. Il est aussi possible de rajouter un label, par exemple, ```{r graphique1} et/ou des options, par exemple, ```{r, echo=FALSE, results='hide'} pour cacher et le code et le résultat dans le rapport),

  • en sortie de chunk R : ``` seul sur une ligne.

En mode éditeur visuel, les trois apostrophes inverses ``` en début et fin de chunk sont cachées. Mais tant en mode visuel qu’en mode source, le fond du texte est représenté dans une couleur différente pour les chunks et pour le texte Markdown, afin de bien les différencier.

Vous devez bien entendu avoir autant de balises d’entrée que de balises de sortie. Des explications plus détaillées se trouvent dans l’annexe B.1.3 dédiée au R Markdown. De plus, l’écriture d’un texte scientifique doit respecter certaines conventions. Vous trouverez des explications à ce sujet dans l’annexe D.

Il vous est toujours possible d’exécuter les instructions d’un chunk ligne après ligne dans la fenêtre Console pour les tester tout comme à partir d’un script R.

Markdown est relativement simple et intuitif à l’usage, même si un petit effort est nécessaire au début. L’apparence finale du texte sera, quant à elle, définie dans une feuille de style séparée. Par défaut, dans RStudio, un mode visuel est proposé, c’est-à-dire qu’on a la possibilité d’employer des boutons pour mettre en gras, en italique, etc. Bien que ce mode soit utile, nous vous recommandons de faire l’effort d’apprendre les principales balises du Markdown.

À vous de jouer !

Déplacez de droite à gauche le curseur sur l’image ci-dessous pour découvrir la forme finale que pourra prendre ce court paragraphe rédigé en Markdown (fond noir : vue dans l’éditeur, fond blanc : forme finale dans un navigateur Web).

h5p

En partant du document Markdown ci-dessus, on peut également obtenir des présentations et différents formats finaux. Ci-dessous, deux feuilles de style différentes ont été appliquées sur ce même document. La présentation diffère (police de caractères, couleurs, taille du texte…)

Le langage Markdown est également utilisé dans les issues de GitHub, dans des forums comme Reddit ou encore pour la rédaction de document avec divers éditeurs de textes.

Consultez les liens Syntaxe de base pour l’écriture et la mise en forme de GitHub et la première section de R Markdown Reference Guide afin d’en apprendre plus sur la syntaxe de Markdown.

À vous de jouer !

Cet exercice H5P reprend plusieurs questions. Assurez-vous de les passer toutes en revue l’une après l’autre.

h5p
Pour en savoir plus

Pour plus d’informations sur Quarto/R Markdown, vous pouvez consulter les liens suivants :

  • Quarto, site contenant tout ce qu’il faut savoir sur Quarto (en anglais).

  • Communicating results with R Markdown explique de manière succincte l’intérêt de R Markdown par rapport à Microsoft Office (en anglais).

  • What is R Markdown?. Vidéo en anglais et site présentant les différentes possibilités, par les concepteurs de R Markdown (RStudio).

  • Introduction to R Markdown. Tutoriel en anglais, par RStudio.

  • R Markdown: the definitive guide est le manuel par excellence pour R Markdown (en anglais uniquement, malheureusement).

  • Aide-mémoire R Markdown, dans les menus de RStudio : Aide -> Cheat Sheets -> Aide-mémoire R Markdown

  • Référence rapide à Markdown, dans les menus RStudio : Aide -> Référence rapide Markdown

À vous de jouer !

Vous allez maintenant manipuler un document Quarto pour réaliser par vous-même des graphiques en nuage de points.

Réalisez le travail A01Ia_scatterplot.

Travail individuel pour les étudiants inscrits au cours de Science des Données Biologiques I : visualisation à l’UMONS à terminer avant le 2024-10-02 23:59:59.

Initiez votre projet GitHub Classroom

Voyez les explications dans le fichier README.md.

1.3.6 Rechercher d’aide

Dans le cadre de ce cours, vous allez vous poser de nombreuses questions. Ces questions pourront porter sur l’utilisation des logiciels, sur la théorie statistique derrière un concept ou encore sur l’utilisation d’une fonction particulière du langage R. Cette section va vous donner des pistes pour trouver de l’aide par vous-mêmes ou en faisant appel à la communauté. Il est indispensable d’apprendre à rechercher l’information pour répondre à vos questions. C’est seulement comme cela que vous progresserez efficacement.

1.3.6.1 Pages d’aide

Des pages d’aide sont associées à chacune des fonctions dans R. Pour y accéder, utilisez l’opérateur ? suivi du nom de la fonction. Dans RStudio, la page d’aide apparaît dans l’onglet Aide. Dans RStudio, il est encore bien plus facile de placer le curseur sur le nom de la fonction dans le code et d’appuyer sur la touche F1 pour faire apparaître sa page d’aide.

?mean

Voici le début de la page d’aide proposée concernant la fonction mean()

Une page d’aide est en anglais et bien souvent technique. Dans certain cas, la page d’aide ne va pas être suffisante afin de vous permettre de répondre à votre interrogation. Si ?<topic> ne fonctionne pas, essayez ??<topic> en doublant le point d’interrogation pour une recherche approfondie dans les pages d’aide, ou encore en utilisant .?<topic> (point - point d’interrogation) dans SciViews-R pour encore plus de détails dans les recherches.

Vous pouvez aussi placer le curseur ou sélectionner le nom d’une fonction dans l’éditeur de texte de Rstudio et ensuite faire appel à l’addin Help pour rechercher la page d’aide qui vous intéresse. Pour certaines fonctions dites génériques, il existe plusieures variantes (dites méthodes) que l’addin Help vous listera.

1.3.6.2 Chatbot SciViews

Le chatbot SciViews est un grand modèle de langage, plus connu sous sa dénomination anglaise de LLM ou encore de large language model. Derrière ChatGPT, Perplexity, Copilot et Gemini se cachent des LLM. Le chatbot est disponible dans votre RStudio au travers ud même addin Help cité un peu plus haut. Il vous est mis à disposition dans le cadre de ce cours. Il répond aux questions qui traitent du langage R, des statistiques et de la science des données.

Il peut vous préparer une page d’aide simplifiée, en anglais, mais aussi en français, sur les fonctions R. Il peut aussi servir à expliquer quelques lignes de code R, un message d’erreur renvoyé par R. Il peut aussi définir et expliquer un terme (statistique, par exemple). Enfin, vous pouvez lui poser n’importe quelle question (mais vous comprendrez très vite qu’il se borne essentiellement à répondre à tout ce qui a un rapport avec R, la statistique ou la science des données).

Les réponses du chatbot SciViews apparaîtront comme une page d’aide dans RStudio.

Attention, les LLM peuvent halluciner. Une hallucination est une réponse qui semble plausible, mais qui est en réalité incorrecte. Cela peut se produire lorsqu’il y a des lacunes dans les données d’entraînement du modèle ou qu’une question posée est ambiguë.

Soyez toujours critique face à l’information proposée par ce chatbot, ainsi que n’importe quel LLM. Vérifiez toujours les informations fournies par une autre voie.

1.3.6.3 Recherche sur internet

Sur Internet, il est possible de trouver des centaines, voire des milliers d’articles de blog, des tutoriels, des aide-mémoires et des manuels en ligne en lien avec R et tout ce qui l’entoure. Les ressources sont principalement en anglais, mais on peut en trouver en français. Il est impératif de bien utiliser les moteurs de recherche pour trouver rapidement une information de qualité. Cela nécessite de poser la bonne question. Une recherche sur Internet est un excellent complément à la réponse d’un chatbot afin de valider l’information.

Voici quelques propositions :

Le manuel suivant propose une section détaillée sur comment trouver de l’aide : https://larmarange.github.io/analyse-R/ou-trouver-de-l-aide.html

L’addin Help dan RStudio vous permet de rechercher de l’aide dans les pages d’aide de R, mais aussi sur Internet avec le moteur Rseek spécialisé dans la recherche de document sur le langage R, StackOverflow (un forum dédié à la programmation) ou encore Google, Bing ou DuckDukGo.

Généralement, les informations que vous allez retrouver devront être modifiées afin de s’adapter à votre problématique ou à la consigne de l’exercice auquel vous répondez.

1.3.6.4 Appel à la communauté

Néanmoins, si vous ne trouvez pas la réponse à votre question malgré une recherche à l’aide des différents outils présentés ci-dessus, il vous reste la possibilité de faire appel à la communauté.

Pour tous les étudiants du cours de Sciences des données I, un espace d’échange est disponible pour poser des questions entre les membres du cours de Science des données I, vous pouvez y accéder également à partir des addins de RStudio. Vous posez facilement votre question en trois étapes.

  1. Depuis RStudio, cliquez sur l’addin qui se trouve dans le menu déroulant Addins
  2. Une fenêtre s’ouvre pour vous rediriger vers l’espace de discussion.
  3. Vous posez votre question.

Vous pouvez également accéder à cet espace de discussion depuis n’importe quelle page de site de ce cours.

Il est possible de faire appel à une communauté bien plus grande, mais nous en resterons là pour ce premier module.


  1. L’extension d’un fichier est un indicateur de son format à la fin de son nom. Il se présente sous forme d’un point (.) suivi d’un sigle de quelques lettres. Par exemple .txt caractérise un fichier texte, alors que .png indique qu’il s’agit d’une image au format PNG. Attention que les extensions sont parfois cachées (c’est systématique dans l’explorateur de fichiers de Windows avec la configuration par défaut, et c’est selon le fichier dans le Finder de macOS. Sous Linux, et donc dans votre machine Saturn Cloud, l’extension est toujours affichée heureusement.↩︎