# Journal de bord du Mooc N_Corduri
## Module 1 : Cahier de notes, cahier de laboratoire
### Exercice 01-1 : Gitlab Recherche / Gitlab Historique
Il est possible dans Gitlab de trouver des fichiers contenant des chaînes de caractères spécifiques en simplement écrivant dans la barre de recherche de Gitlab
la chaîne de caractères souhaitée.
De plus, il est possible de voir toutes les modifications qui ont été effectué sur un fichier et par quelle personne en cherchant dans l'historique du fichier.
Pour cela, il suffit d'aller dans l'onglet 'History' un fois le document ouvert.
Chaque modification dans Gitlab est accompagnée d'un numéro de commit (Exemple : dcdc68a8) et du nom de l'auteur du commit (Exemple : N_Corduri)
### Exercice 01-2 : Ecrire un fichier markdown / Comparer avec la solution
Les différentes syntaxes de base pour écrire en markdown :
| **Syntaxe** | **Symbole** | **Exemple** |
|---|---|---|
|Titre 1|``#``|``# Titre 1``|
|Titre 2|``##``|``## Titre 2``|
|*Italique*|``* *``|``* Une phrase en italique *``|
|**Gras**|``** **``|``** Une phrase en gras **``|
|Lien|``[]()``|``[fun-mooc.fr](https://www.fun-mooc.fr/fr/)``|
|Code|`` ``|``Une ligne de code``|
|Liste à puce| ``-``| `` - item ``|
|Liste numérotée| ``1.``| ``1. item``|
Plus de syntaxes basiques [ici](https://www.markdownguide.org/basic-syntax/) et plus de syntaxes plus spécifiques [ici](https://www.markdownguide.org/extended-syntax/).
### Exercice 01-3 : Ecrire un journal de bord
Ce journal de bord à été écrit en Markdown en utilisant les syntaxes apprises dans l'exercice 01-2.
## Module 2 : La vitrine et l'envers du décor : le document computationnel
Dans ce module il est possible d'utiliser trois outils, à avoir, Jupyter, Rstudio et OrgMode. Dans notre cas nous utilisons Jupyter.
### Exercice 02-1 : Savoir utiliser un notebook
Dans cet exercice il faut reproduire un document [modèle](https://lms.fun-mooc.fr/asset-v1:inria+41016+self-paced+type@asset+block/toy_notebook_fr.pdf) en utilisant Jupyter.
Mon document est [celui-ci](https://app-learninglab.inria.fr/moocrr/jupyter/user/f3525de4a1a18e7596f7a06bd19c9fc1/notebooks/work/module2/exo1/toy_notebook_fr.ipynb).
Il a suffit de reproduire les textes en markdown avec des syntaxes vu précédemment et les morceaux de codes en python.
Pour avoir le même affichage que dans l'exemple il faut enregistrer le document en pdf.
De plus, les équations en markdown s'écrivent comme dans le tableau ci-dessous :
| **Syntaxe** | **Symbole** | **Exemple** |
|---|---|---|
|Equation|``$ $``|``$x + y =1$``|
|Pi|``\pi``| |
|Vague|``\sim``||
|Inférieur ou égale|``\leq``||
### Exercice 02-2 : Savoir faire un calcul simple soi-même
Ce exercice demande de savoir effectuer des calcul simple sur une list de nombre en utilisant la biliothèque de python numpy.
Pour cela il faut utiliser les commandes ci dessous.
| **Calcul** | **Exemple** |
|---|---|
|Créer une liste|``List = [1, 2, 3, ...]``|
|Moyenne|``np.mean(List)``|
|Ecart-type|``np.std(List)``|
|Médiane|``np.median(List)``|
|Minimum|``np.min(List)``|
|Maximum|``np.max(List)``|
Voici le [lien](https://app-learninglab.inria.fr/moocrr/jupyter/user/f3525de4a1a18e7596f7a06bd19c9fc1/notebooks/work/module2/exo2/exercice.ipynb) pour accéder à l'exercice 02-2.
### Exercice 02-3 : Réaliser un affichage graphique
Pour tracer un graphique utiliser ``import matplotlib.pyplot as plt``
| **Calcul** | **Exemple** |
|---|---|
|Graphique|``plt.plot(List)``|
|Histogramme|``plt.hist(List)``|
Voici un [exemple](https://app-learninglab.inria.fr/moocrr/jupyter/user/f3525de4a1a18e7596f7a06bd19c9fc1/notebooks/work/module2/exo3/exercice.ipynb) de graphiques effectués avec cette méthode.
## Module 3 : La main à la pâte : une analyse réplicable
### Exercice 03-1 : Analyse de l'incidence du syndrôme grippal avec une copie locale des données
Dans cet exercice, nous modifions un URL qui nécessite un accès internet par un URL local afin d'être sûr de ne pas avoir de problème lors de l'ouverture du fichier.
Pour cela, nous enregistrons les données localement dans un fichier CSV et nous modifions le code afin que celui-ci utilise le bon fichier.
```
# data_url = "http://www.sentiweb.fr/datasets/incidence-PAY-3.csv"
data_url = "Donnees_Grippe.csv"
```
Pour plus de précision sur le code, voir directement sur le notebook de l'exercice correspondant [ici](https://app-learninglab.inria.fr/moocrr/jupyter/user/f3525de4a1a18e7596f7a06bd19c9fc1/notebooks/work/module3/exo1/analyse-syndrome-grippal.ipynb).
### Exercice 03-2 : Analyse de l'incidence de la varicelle
Afin d'obtenir des résultats similaires à l'exercice précédent, il suffit de reproduire le même code avec les données de la varicelle et en modifiant la date de départ de chaque année à septembre au lieu de aout.
```
# data_url = "https://www.sentiweb.fr/datasets/incidence-PAY-7.csv"
data_url = "Donnees_Varicelle.csv"
```
Et pour effectuer un changement du mois de référence de chaque année de août à septembre :
```
first_august_week = [pd.Period(pd.Timestamp(y, 8, 1), 'W')
for y in range(1985,
sorted_data.index[-1].year)]
```
Devient :
```
first_september_week = [pd.Period(pd.Timestamp(y, 9, 1), 'W')
for y in range(1991,
sorted_data.index[-1].year)]
```
Nous pouvons alors voir que l'année avec le plus de cas de varicelle est l'année 2009 et celle avec le moins de cas est l'année 2020.
Pour plus de précision sur le code, voir directement sur le notebook de l'exercice correspondant [ici](https://app-learninglab.inria.fr/moocrr/jupyter/user/f3525de4a1a18e7596f7a06bd19c9fc1/notebooks/work/module3/exo2/exercice.ipynb).
### Exercice 03-3 : Travail pratique avec évaluation par les pairs
Le but de cet exercice est d'écrire un document computationnel à l'aide de sujets proposés. Dans mon cas j'ai choisi le sujet 7 : Autour du SARS-CoV-2 (Covid-19).
L'exercice a été réalisé sans trop de problème avec la bibliothèque Pandas en python.
Les détails de cet exercice sont disponibles sur le notebook [ici](https://app-learninglab.inria.fr/moocrr/jupyter/user/f3525de4a1a18e7596f7a06bd19c9fc1/notebooks/work/module3/exo3/exercice.ipynb),
mais également sous forme pdf [ici](https://app-learninglab.inria.fr/moocrr/gitlab/f3525de4a1a18e7596f7a06bd19c9fc1/mooc-rr/blob/master/module3/exo3/exercice.pdf)
et sous forme ipynb [ici](https://app-learninglab.inria.fr/moocrr/gitlab/f3525de4a1a18e7596f7a06bd19c9fc1/mooc-rr/blob/master/module3/exo3/exercice.ipynb)
De plus, j'ai corrigé deux documents effectués par deux autres personnes réalisant ce MOOC qui ont été très bien réalisé.
### Exercice Final : Comment reproduire le document computationnel de l'exercice 03-3
DONNER LIEN EXERCICE
DONNER BUT
DONNER COMMENT OUVRIR LES DOCUEMENTS ETC...
Cet exercice a pour but de donner toute la démarche pour que n'importe qui puisse reproduire le document computationnel de l'exercice 03-3 : [Autour du SARS-CoV-2 (Covid-19)](https://app-learninglab.inria.fr/moocrr/gitlab/f3525de4a1a18e7596f7a06bd19c9fc1/mooc-rr/blob/master/module3/exo3/exercice.pdf).
Le document computationnel du notebook est un document séparé en plusieurs parties, à savoir des parties de texte en language de balisage markdown et des parties de code en language python.
Pour avoir plus d'information sur la manière d'écrire en markdown se référer aux explications données sur les exercices ci-dessus.
#### 1. Titre
Tout d'abord nous donnons un titre à notre document : "# Ecrire un document computationnel autour du SARS-CoV-2 (Covid-19)", "#" signifiant titre d'ordre 1 en markdown.
#### 2. Contexte
Donnons un peu de contexte avec un petit paragraphe nommé "## Contexte", "##" signifiant titre d'ordre 2.
Le contenu de ce paragraphe est le suivant :
"Le but de cet exercice est d'écrire un document computationnel autour du SARS-CoV-2 (Covid-19). Il faut réaliser une représentaion graphique semblable à celles du [South China Morning Post](https://www.scmp.com/) concernant le nombre total de cas de personne atteintes de la maladie du Covid-19 par pays.
Nous nous concentrons sur les données disponibles à cette [adresse](https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv).
Dans notre cas nous regarderons les données des pays suivants : la Belgique (Belgium), la Chine - toutes les provinces sauf Hong-Kong (China), Hong Kong (China, Hong-Kong), la France métropolitaine (France), l’Allemagne (Germany), l’Iran (Iran), l’Italie (Italy), le Japon (Japan), la Corée du Sud (Korea, South), la Hollande sans les colonies (Netherlands), le Portugal (Portugal), l’Espagne (Spain), le Royaume-Unis sans les colonies (United Kingdom), les États-Unis (US)."
Utiliser ``[]()`` pour ajouter des liens aux mots souhaités, par exemple : ``[fun-mooc.fr](https://www.fun-mooc.fr/fr/)``.
Dans notre cas nous allons donner le lien ``https://www.scmp.com/`` pour ``South China Morning Post`` afin de donner accès au site d'origine des données que nous allons utiliser aux lecteurs et ``https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv`` pour ``adresse`` afin de donner accès au données brutes aux lecteurs
#### 3. Exploitation des données
Nous allons maintenant traiter les données que nous avons récupérées via le lien ``https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv``.
Nous voulons extraire les données du nombre de personne ayant eu le Covid 19 depuis le début de l'épidémie en fonction de la date et du pays parmis les pays que nous avons selectionnés.
Les différentes anotations en markdown dans cette partie n'étant pas une nécessité, elles vous seront données comme ceci : MARKDOWN : "Texte". Si vous voulez avoir exactement le même document il vous faudra alors les ajouter a votre propre document computationnel.
MARKDOWN : "## Exploitation des données"
MARKDOWN : "Afin de pouvoir traité ces données en python, il est nécessaire d'importer les bibliothèques python suivantes."
L'avantage de python est de pouvoir utiliser des bibliothèques contenant des fonctions déjà programmées. Nous avons utilisé les bibliothèques ``matplotlib.pyplot``, ``pandas`` et ``isoweek``. Pour cela, écrivez le code suivant :
```
%matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd
import isoweek
```
MARKDOWN : "Pour ne pas avoir de problème de modification de données entre temps j'enregistre les données localement. Ces données n'évolueront donc pas ce qui évitera des problèmes par la suite. En revanche, la date la plus récentes est le 14/10/2022, date de la sauvegarde local."
Afin d'avoir exactement les mêmes données daté du 14/10/2022, enregitrez les données données suivantes [ici](https://app-learninglab.inria.fr/moocrr/jupyter/user/f3525de4a1a18e7596f7a06bd19c9fc1/edit/work/module3/exo3/Donn%C3%A9es%20Covid%2019.csv) dans un document .csv nommé "Données Covid 19.csv" dans le même fichier que votre document computationnel.
Nous pouvons maintenant ouvrir nos données à l'aide de la fonction ``pd.read_csv()``. Pour cela écrivez le code suivant :
```
# data_url = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv"
data_url = "Données Covid 19.csv"
data_raw = pd.read_csv(data_url)
data = data_raw
# display(data)
```
MARKDOWN : "Une fois nos données disponibles, je vais chercher les lignes des pays nous intéressant avec la fonction `.loc()` de la bibliothèque Pandas. Une fois ces données localisées, je vais les regrouper sous forme de DataFrame afin de pouvoir les traiter."
Pour avoir le `.loc()` écrire ``.loc()``
Nous pouvons maintenant extraire les données pour chaque pays. Pour cela, il faut tout d'abord les localiser avec la fonction `.loc()` en écrivant le code suivant :
```
Row_Belgium = data.loc[data['Country/Region'] == 'Belgium']
Series_Belgium = pd.Series(data.loc[Row_Belgium.index[0]], name = 'Belgium', dtype = int)
Row_China = data.loc[(data['Country/Region'] == 'China') & (data['Province/State'] != 'Hong Kong')]
Series_China_Total = Row_China.sum()
Row_HongKong = data.loc[data['Province/State'] == 'Hong Kong']
Series_HongKong = pd.Series(data.loc[Row_HongKong.index[0]], name = 'HongKong', dtype = int)
Row_France = data.loc[(data['Province/State'].isna()) & (data['Country/Region'] == 'France')]
Series_France = pd.Series(data.loc[Row_France.index[0]], name = 'France', dtype = int)
Row_Germany = data.loc[data['Country/Region'] == 'Germany']
Series_Germany = pd.Series(data.loc[Row_Germany.index[0]], name = 'Germany', dtype = int)
Row_Iran = data.loc[data['Country/Region'] == 'Iran']
Series_Iran = pd.Series(data.loc[Row_Iran.index[0]], name = 'Iran', dtype = int)
Row_Italy = data.loc[data['Country/Region'] == 'Italy']
Series_Italy = pd.Series(data.loc[Row_Italy.index[0]], name = 'Italy', dtype = int)
Row_Japan = data.loc[data['Country/Region'] == 'Japan']
Series_Japan = pd.Series(data.loc[Row_Japan.index[0]], name = 'Japan', dtype = int)
Row_KoreaSouth = data.loc[data['Country/Region'] == 'Korea, South']
Series_KoreaSouth = pd.Series(data.loc[Row_KoreaSouth.index[0]], name = 'Korea, South', dtype = int)
Row_Netherlands = data.loc[(data['Province/State'].isna()) & (data['Country/Region'] == 'Netherlands')]
Series_Netherlands = pd.Series(data.loc[Row_Netherlands.index[0]], name = 'Netherlands', dtype = int)
Row_Portugal = data.loc[data['Country/Region'] == 'Portugal']
Series_Portugal = pd.Series(data.loc[Row_Portugal.index[0]], name = 'Portugal', dtype = int)
Row_Spain = data.loc[data['Country/Region'] == 'Spain']
Series_Spain = pd.Series(data.loc[Row_Spain.index[0]], name = 'Spain', dtype = int)
Row_UnitedKingdom = data.loc[(data['Province/State'].isna()) & (data['Country/Region'] == 'United Kingdom')]
Series_UnitedKingdom = pd.Series(data.loc[Row_UnitedKingdom.index[0]], name = 'United Kingdom', dtype = int)
Row_US = data.loc[data['Country/Region'] == 'US']
Series_US = pd.Series(data.loc[Row_US.index[0]], name = 'US', dtype = int)
frame = {'Belgium': Series_Belgium,
'China': Series_China_Total,
'Hong Kong': Series_HongKong,
'France': Series_France,
'Germany': Series_Germany,
'Iran': Series_Iran,
'Italy': Series_Italy,
'Japan': Series_Japan,
'Korea, South': Series_KoreaSouth,
'Netherlands': Series_Netherlands,
'Portugal': Series_Portugal,
'Spain': Series_Spain,
'United Kingdom': Series_UnitedKingdom,
'US': Series_US}
selected_data_raw = pd.DataFrame(frame)
selected_data = selected_data_raw[4:].reset_index()
selected_data = selected_data.rename(columns={'index': 'Date'})
# display(selected_data)
```
MARKDOWN : "Un fois nos données regroupées dans le DataFrame `selected_data`, je vais alors pouvoir les tracer avec la fonction `.plot()` de la bibliothèque Pandas."
Nos données étant stockées dans la dataframe nommée "frame", il ne reste plus qu'à tracer les données de chaque pays en fonction de la date. Pour cela utilisé le code suivant :
```
colors = ['black',
'gray',
'silver',
'brown',
'red',
'coral',
'chocolate',
'orange',
'gold',
'darkgreen',
'lime',
'cyan',
'darkblue',
'magenta'
]
selected_data.plot(x = 'Date',
y = ['Belgium','China','Hong Kong',
'France','Germany','Iran',
'Italy','Japan','Korea, South',
'Netherlands','Portugal','Spain',
'United Kingdom', 'US'],
figsize=(15, 8),
color = colors)
plt.title('Nombre de cas de Covid-19 en fonction de la date et du pays', fontsize = 18)
plt.xlabel('Date',fontsize = 18)
plt.ylabel('Nombre de cas de Covid-19',fontsize = 18)
plt.xticks([0,345,710,996],
[selected_data['Date'][0],
selected_data['Date'][345],
selected_data['Date'][710],
selected_data['Date'][996]],
rotation=45)
plt.grid(which='both', linestyle='--')
```
A REVOIR :
N'hésitez pas a chercher la signification de chaque ligne sur internet.
MARKDOWN : "Nous avons donc un graphique représentant le nombre de cas de Covid-19 en fonction de la date et du pays. Nous allons maintenant refaire ce graphique avec toutes les données de chaque pays selectionné cumulées."
Et pour fini nous avons tracées les donnes totales de tout ces pays en échelle linéaire mais aussi en échelle logarithmique. Pour cela utiliser le code suivant :
```
selected_data['Total'] = selected_data['Belgium'] + selected_data['China'] + selected_data['France'] + selected_data['Germany'] + selected_data['Hong Kong'] + selected_data['Iran'] + selected_data['Italy'] + selected_data['Japan'] + selected_data['Korea, South'] + selected_data['Netherlands'] + selected_data['Portugal'] + selected_data['Spain'] + selected_data['US'] + selected_data['United Kingdom']
# Echelle linéaire
selected_data.plot(x = 'Date',
y = 'Total',
figsize=(15, 8),)
plt.title('Nombre de cas de Covid-19 total des pays selectionnés en fonction de la date en échelle linéaire', fontsize = 18)
plt.xlabel('Date',fontsize = 18)
plt.ylabel('Nombre de cas de Covid-19',fontsize = 18)
plt.xticks([0,345,710,996],
[selected_data['Date'][0],
selected_data['Date'][345],
selected_data['Date'][710],
selected_data['Date'][996]],
rotation=45)
plt.grid(which='both', linestyle='--')
plt.show()
# Echelle logarithmique
selected_data.plot(x = 'Date',
y = 'Total',
figsize=(15, 8),)
plt.title('Nombre de cas de Covid-19 total des pays selectionnés en fonction de la date en échelle logarithmique', fontsize = 18)
plt.xlabel('Date',fontsize = 18)
plt.ylabel('Nombre de cas de Covid-19',fontsize = 18)
plt.yscale('log')
plt.xticks([0,345,710,996],
[selected_data['Date'][0],
selected_data['Date'][345],
selected_data['Date'][710],
selected_data['Date'][996]],
rotation=45)
plt.grid(which='both', linestyle='--')
plt.show()
```