L’histoire de ce TP et les données proviennent d’un article de Christner et al..
Escherichia coli O104:H4 producteur de shigatoxines (groupe phylogénétique B1 et ST678) est une bactérie avec des caractéristiques de virulence communes aux E. coli entéroagrégatifs (EAEC). Cette souche est très virulente et peut être responsable du syndrome hémolytique et urémique (SHU). Plusieurs épidémies ont été décrites en Europe mais la source n’a pas été clairement identifiée malgré des recherches intensives.
En 2011, le nord de l’Allemagne a connu une importante épidémie d’E.coli Shiga-toxigène O104:H4. La grande quantité d’échantillons envoyés aux laboratoires de microbiologie pour l’évaluation épidémiologique a souligné l’importance de procédures de typage rapides et peu coûteuses.
Nous utiliserons les fonctions de ce tutoriel.
Evaluer les performances de la spectrométrie de masse de type MALDI-TOF pour le typage d’un clone d’Escherichia coli Shiga-toxigène O104:H4
GitHub est un service web d’hébergement et de gestion de développement de logiciels. Nous pouvons stocker des données dans un dossier appelé repository.
Les données que nous allons utiliser pour ces travaux pratiques sont disponibles sur un repository GitHub.
Vous pouvez télécharger directment les données via un lien. Deux fichiers vont pouvoir être téléchargés (i) Une matrice d’intensité (RawIntensityMatrixChristner) et (ii) les métadata associées (MetadataShigatoxChristnermetadata).
Les deux fichiers sont ont des formats différents: -
RawIntensityMatrixChristner est un fichier en format .csv
-
MetadataShigatoxChristnermetadata est en fichier en format
.tsv
Question : quelle est la différence entre un fichier
.csv
et un fichier .tsv
?
Réponse :
Nous allons utiliser le package R qui permet l’import de fichiers avec des formats différents.
#install.package("readr") #installation du package
library("readr") # chargement des fonctions
Deux fonctions du package readr
vont être utilisées pour
importer les fichiers : read_tsv()
et
read_csv()
. Vous pouvez regarder la documentation associée
avec les commandes : ?read_tsv()
et
?read_csv()
# (i) Téléchargement de la matrice d'intensité
## utilisation de la fonction url pour ouvrir ou fermer une connection
urlfileMatrix <- url("https://raw.githubusercontent.com/agodmer/MSData/main/ShigaToxigenicEscherichia/RawIntensityMatrixChristnerSN3.tsv")
## Utilisation de la fonction read_tsv
IntensityMatrixShigatox <- read_tsv(urlfileMatrix)
## Rows: 891 Columns: 956
## -- Column specification --------------------------------------------------------
## Delimiter: "\t"
## dbl (956): 2004.25296921192, 2008.53597116772, 2013.23855360021, 2018.575972...
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
# (ii) Téléchargement des métadata associées
urlfileMetadata <- url("https://raw.githubusercontent.com/agodmer/MSData/main/ShigaToxigenicEscherichia/MetadataShigatoxChristner.csv")
## Utilisation de la fonction read_tsv
MetadataMatrixShigatox <- read_csv(urlfileMetadata)
## Rows: 891 Columns: 5
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr (4): Toxigenic_status, Strain_number, spot, type_of_extraction
## dbl (1): id_number
##
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
Question : A l’aide de la fonction
dim()
, déterminer le nombre de colones et de lignes pour
chacun des deux tableaux téléchargés.
## table dimension
dim(IntensityMatrixShigatox)
## [1] 891 956
Réponse : La matrice d’intensités contient :
X
colones et Y
lignes
## table dimension
dim(MetadataMatrixShigatox)
## [1] 891 5
Réponse : Le tableau des métadadonnées contient :
X
colones et Y
lignes
En sachant que le nombre de lignes pour la matrice d’intensités correspond au nombres d’échantillons (spectre). Ce résutat est-il cohérent avec le fichier de métadonnées associées ?
Réponse :
hist()
:## Unlist the data in a signe vector
Hist.data <- unlist(IntensityMatrixShigatox)
## Plot hist (ugly graph)
hist(Hist.data)
Votre analyse :
?hist
pour obtenir la page d’aide de la
fonction## Beatutiful plot
## Install packages
#install.packages(c("FactoMineR", "factoextra"))
## load
library("FactoMineR")
library("factoextra")
## Le chargement a nécessité le package : ggplot2
## Welcome! Want to learn more? See two factoextra-related books at https://goo.gl/ve3WBa
## Easy PCA no scale
res.pca.raw <- PCA(IntensityMatrixShigatox, scale.unit = FALSE, graph = FALSE)
## Plot variance results
fviz_eig(res.pca.raw, addlabels = TRUE, ylim = c(0, 100))
Question : Quelle est la variance résumée par les deux premières composantes principales ?
Réponse :
## Plot PCA
#### Axes 1 et 2
fviz_pca_ind(res.pca.raw,
geom.ind = "point", # show points only (nbut not "text")
col.ind = MetadataMatrixShigatox$Toxigenic_status, # color by groups
palette = c("blue", "red", "green", "black"),
addEllipses = TRUE, # Concentration ellipses
legend.title = "Groups"
)
## Plot PCA
#### Axes 2 et 3
fviz_pca_ind(res.pca.raw,
geom.ind = "point", # show points only (nbut not "text")
axes = c(2, 3),
col.ind = MetadataMatrixShigatox$Toxigenic_status, # color by groups
palette = c("blue", "red", "green", "black"),
addEllipses = TRUE, # Concentration ellipses
legend.title = "Groups"
)
fviz_contrib(res.pca.raw,
choice = "var",
axes = 1:2,
top = 10)
fviz_pca_biplot (res.pca.raw,
col.ind = MetadataMatrixShigatox$Toxigenic_status,
palette = "jco",
addEllipses = TRUE,
label = "var",
col.var = "black",
repel = TRUE,
legend.title = "Species")
## Warning: ggrepel: 956 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
## Easy PCA no scale
res.pca.scale <- PCA(IntensityMatrixShigatox,
scale.unit = TRUE,
graph = FALSE)
## Plot variance results
fviz_eig(res.pca.scale,
addlabels = TRUE,
ylim = c(0, 100))
## Plot PCA
fviz_pca_ind(res.pca.scale,
geom.ind = "point", # show points only (nbut not "text")
col.ind = MetadataMatrixShigatox$Toxigenic_status, # color by groups
palette = c("blue", "red", "green", "black"),
addEllipses = TRUE, # Concentration ellipses
legend.title = "Groups"
)
fviz_contrib(res.pca.scale,
choice = "var",
axes = 1:2,
top = 10)
fviz_pca_var(res.pca.scale,
col.var = "contrib",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07")
)
fviz_pca_biplot (res.pca.scale,
col.ind = MetadataMatrixShigatox$Toxigenic_status,
palette = "jco",
addEllipses = TRUE, label = "var",
col.var = "black", repel = TRUE,
legend.title = "Species")
## Warning: ggrepel: 954 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps