328 lines
No EOL
14 KiB
Text
328 lines
No EOL
14 KiB
Text
---
|
|
title: "Projet"
|
|
output: html_document
|
|
date: "2024-12-04"
|
|
---
|
|
|
|
```{r setup, include=FALSE}
|
|
knitr::opts_chunk$set(echo = TRUE)
|
|
library(ggplot2)
|
|
library(gridExtra)
|
|
library(reshape2)
|
|
library(corrplot)
|
|
library(FactoMineR)
|
|
library(factoextra)
|
|
```
|
|
|
|
```{r}
|
|
T = read.table("DataProjet3MIC-2425.txt",header=TRUE,sep=";")
|
|
T$ExpT1 = as.factor(T$ExpT1)
|
|
T$ExpT2 = as.factor(T$ExpT2)
|
|
T$ExpT3 = as.factor(T$ExpT3)
|
|
head(T)
|
|
summary(T)
|
|
str(T)
|
|
levels(T$ExpT1)
|
|
```
|
|
|
|
|
|
|
|
|
|
### Contenu du jeu de données :
|
|
- 3 variables qualitatives nominales représentant l'expression du gêne $$g$$ dont les modalités sont $$\{"sur","sous","non"\}$$. chaque variable correspond respectivement à la différence d'expression du gêne mesurée à la 6èeme heure lors du traitement $$T \in \{T1,T2,T3\}$$
|
|
|
|
- $$3*6 + 3*6 = 36$$ variables quantitatives continues représentant les effets des traitements sur l'expression des gênes T1 T2 et T3 à 1h,2h,3h,4h,5h,6h après l'administration pour les replicats R1 et R2, par rapport à leur expression à T=0 ( sans traitement).
|
|
|
|
- Ce jeu de données contient des relevés sur 542 individus, ici des gênes.
|
|
|
|
|
|
## Analyse unidimentionnelle :
|
|
### Expression des gênes lors du traitement T1
|
|
```{r}
|
|
g1<-ggplot(T, aes(x=T$ExpT1))+
|
|
geom_bar()+
|
|
ylab("Effectifs")+ggtitle("Effectifs")
|
|
g2<-ggplot(T, aes(x = T$ExpT1)) +
|
|
geom_bar(aes(y = (..count..)/sum(..count..)))+ylab("")+ggtitle("Frequences")
|
|
|
|
df <- data.frame(group = levels(T$ExpT1),
|
|
value = as.vector(table(T$ExpT1))/nrow(T))
|
|
g3<-ggplot(df, aes(x="", y=value, fill=group))+
|
|
geom_bar(width = 1, stat = "identity")+
|
|
coord_polar("y", start=0)+
|
|
theme(legend.position="bottom")
|
|
grid.arrange(g3,g1,g2,ncol=3)
|
|
```
|
|
|
|
### Expression des gênes lors du traitement T2
|
|
```{r}
|
|
g1<-ggplot(T, aes(x=T$ExpT2))+
|
|
geom_bar()+
|
|
ylab("Effectifs")+ggtitle("Effectifs")
|
|
g2<-ggplot(T, aes(x = T$ExpT2)) +
|
|
geom_bar(aes(y = (..count..)/sum(..count..)))+ylab("")+ggtitle("Frequences")
|
|
|
|
df <- data.frame(group = levels(T$ExpT2),
|
|
value = as.vector(table(T$ExpT2))/nrow(T))
|
|
g3<-ggplot(df, aes(x="", y=value, fill=group))+
|
|
geom_bar(width = 1, stat = "identity")+
|
|
coord_polar("y", start=0)+
|
|
theme(legend.position="bottom")
|
|
grid.arrange(g3,g1,g2,ncol=3)
|
|
```
|
|
|
|
|
|
### Expression des gênes lors du traitement T3
|
|
```{r}
|
|
g1<-ggplot(T, aes(x=T$ExpT3))+
|
|
geom_bar()+
|
|
ylab("Effectifs")+ggtitle("Effectifs")
|
|
g2<-ggplot(T, aes(x = T$ExpT3)) +
|
|
geom_bar(aes(y = (..count..)/sum(..count..)))+ylab("")+ggtitle("Frequences")
|
|
|
|
df <- data.frame(group = levels(T$ExpT3),
|
|
value = as.vector(table(T$ExpT3))/nrow(T))
|
|
g3<-ggplot(df, aes(x="", y=value, fill=group))+
|
|
geom_bar(width = 1, stat = "identity")+
|
|
coord_polar("y", start=0)+
|
|
theme(legend.position="bottom")
|
|
grid.arrange(g3,g1,g2,ncol=3)
|
|
```
|
|
|
|
### Analyse de de ces 3 variables
|
|
On remarque que les traitements T2 et T3 semblent avoir un effet assez similaire sur l'expression des gênes relevée à la 6ème heure : Une polarisation entre la sous expression et la sur expression qui se partagent presque la totalité des relevés, avec un poids légèrement superieur à 55% pour la sur-expression au détriment de la sous-expression. Cela a peut être un rapporrt avec le fait que T3 est une combinaison des traitement T1 et T2.
|
|
|
|
T1 quant à lui se démarque grandement par une large majorité (Un peu plus de 80%), de gêne n'ayant pas changé d'expression après 6h de traitement.
|
|
|
|
### Expression relative des gênes mesurées à intervalle régulier
|
|
|
|
#### Traitement T1
|
|
```{r, fig.height=10}
|
|
#apply(T[-c(37:39)],2,function(col){
|
|
# which(T == col)
|
|
#hist(col, main = paste("Histogram of", colnames(T)[which(T == col)[2]]),
|
|
# xlab = "Values", col = "lightblue", border = "black")
|
|
#})
|
|
T_long = melt(T[c(1,2,3,4,5,6,19,20,21,22,23,24)])
|
|
ggplot(T_long, aes(x = value)) +
|
|
geom_histogram(binwidth = 1, fill = "blue", color = "black", alpha = 0.7) +
|
|
facet_wrap(~variable,scales = "free",ncol=6) +
|
|
labs(title = "Histograms for Each Column", x = "Values", y = "Frequency")
|
|
```
|
|
### Traitement T2
|
|
```{r, fig.height=10}
|
|
T_long = melt(T[c(7,8,9,10,11,12,25,26,27,28,29,30)])
|
|
ggplot(T_long, aes(x = value)) +
|
|
geom_histogram(binwidth = 1, fill = "blue", color = "black", alpha = 0.7) +
|
|
facet_wrap(~variable,scales = "free",ncol=6) +
|
|
labs(title = "Histograms for Each Column", x = "Values", y = "Frequency")
|
|
```
|
|
### Traitement T3
|
|
```{r, fig.height=10}
|
|
T_long = melt(T[c(13,14,15,16,17,18,31,32,33,34,35,36)])
|
|
ggplot(T_long, aes(x = value)) +
|
|
geom_histogram(binwidth = 1, fill = "blue", color = "black", alpha = 0.7) +
|
|
facet_wrap(~variable,scales = "free",ncol=6) +
|
|
labs(title = "Histograms for Each Column", x = "Values", y = "Frequency")
|
|
```
|
|
|
|
|
|
Nous observons bien une concordance avec l'analyse des expressions des gênes figure <celle de la question precedente>. EN effet, les histogrammes en rapport avec le traitement 1 sont très nettement regroupés vers 0, soit une expression relative des gênes qui ne change peu. Les histogrammes pour les relevés des variables en lien avec T2 et T3 sont tout aussi similaires aux résultats précédents : La variance de l'expression relative des gênes est plus élevée et on observe bien une polarisation "sous-exprimé-"sur-exprimé" sur les relevés à 6h. Attention, ici on observe aussi que T2 et T3 n'ont pas leur effet caractéristique directement : à 2h, la distribution de l'expression des genes semble presque Gaussienne, et à 1h elle ne se distingue pas beaucoup du traitement 1 avec un regroupement sur 0.
|
|
|
|
### boxplots pour faire joli
|
|
```{r}
|
|
ggplot(melt(T[1:18]),aes(x=variable,y=value))+
|
|
geom_boxplot()+ theme(axis.text.x = element_text(angle=90, vjust = 0.5, hjust = 1))
|
|
ggplot(melt(T[19:36]),aes(x=variable,y=value))+
|
|
geom_boxplot() + theme(axis.text.x = element_text(angle=90, vjust = 0.5, hjust = 1))
|
|
```
|
|
|
|
On voit que même sans réduire les données, chaque variable s'exprime environ avec la même intensité.
|
|
|
|
|
|
# TODO : RAJOUTER LES BOXPLOTS PAIRE QUANTITATIF QUALITATIF POUR DECELER UNE CORRELATION, INUTILE
|
|
|
|
```{r}
|
|
|
|
# traitement 1 corrélation avec l'expression des genes du T1 T2 et T3
|
|
ggplot(T,aes(y=T$T1_6H_R1,x=T$ExpT1))+
|
|
geom_boxplot()
|
|
ggplot(T,aes(y=T$T1_6H_R2,x=T$ExpT1))+
|
|
geom_boxplot()
|
|
ggplot(T,aes(y=T$T1_6H_R1,x=T$ExpT2))+
|
|
geom_boxplot()
|
|
ggplot(T,aes(y=T$T1_6H_R2,x=T$ExpT2))+
|
|
geom_boxplot()
|
|
ggplot(T,aes(y=T$T1_6H_R1,x=T$ExpT3))+
|
|
geom_boxplot()
|
|
ggplot(T,aes(y=T$T1_6H_R2,x=T$ExpT3))+
|
|
geom_boxplot()
|
|
|
|
# traitement 2 corrélation avec l'expression des genes du T1 T2 et T3
|
|
|
|
ggplot(T,aes(y=T$T2_6H_R1,x=T$ExpT1))+
|
|
geom_boxplot()
|
|
ggplot(T,aes(y=T$T2_6H_R2,x=T$ExpT1))+
|
|
geom_boxplot()
|
|
ggplot(T,aes(y=T$T2_6H_R1,x=T$ExpT2))+
|
|
geom_boxplot()
|
|
ggplot(T,aes(y=T$T2_6H_R2,x=T$ExpT2))+
|
|
geom_boxplot()
|
|
ggplot(T,aes(y=T$T2_6H_R1,x=T$ExpT3))+
|
|
geom_boxplot()
|
|
ggplot(T,aes(y=T$T2_6H_R2,x=T$ExpT3))+
|
|
geom_boxplot()
|
|
|
|
# traitement 2 corrélation avec l'expression des genes du T1 T2 et T3
|
|
ggplot(T,aes(y=T$T3_6H_R1,x=T$ExpT1))+
|
|
geom_boxplot()
|
|
ggplot(T,aes(y=T$T3_6H_R2,x=T$ExpT1))+
|
|
geom_boxplot()
|
|
ggplot(T,aes(y=T$T3_6H_R1,x=T$ExpT2))+
|
|
geom_boxplot()
|
|
ggplot(T,aes(y=T$T3_6H_R2,x=T$ExpT2))+
|
|
geom_boxplot()
|
|
ggplot(T,aes(y=T$T3_6H_R1,x=T$ExpT3))+
|
|
geom_boxplot()
|
|
ggplot(T,aes(y=T$T3_6H_R2,x=T$ExpT3))+
|
|
geom_boxplot()
|
|
|
|
```
|
|
Analyse des boxplots :
|
|
- traitement 1 (réplicats 1 et 2)
|
|
Les genes sur-exprimés au T1 n'ont pas changé d'expression relativement à l'absence de traitement durant le T2.
|
|
Il est difficile d'observer une catégorie de genes de T1 qui se soient sous exprimés dans T2. De même pour la sur-expression dans T2.
|
|
|
|
Ceux qui s'étaient sur-exprimés au T1 ont affiché aucun changement semblent ne pas avoir changé d'expression au T3 ( relativement à l'absence de traitement).
|
|
|
|
Ceux qui n'avaient pas changés d'expression relative durant T1, se sont sous exprimé ou sur exprimé.
|
|
Il faut bien se rappeler que T1 ne cible que très peu de genes donc ces observations sont cohérentes.
|
|
|
|
- traitement 2
|
|
On observe une légère tendance des genes s'étant sous-exprimé avec T1 à se sous exprimer avec T2 mais le reste des boxplots ne permettent pas de relever quoi que ce soit par rapport à T2.
|
|
|
|
En revanche, il est très clair que T2 et T3 ciblent les mêmes genes, toutes les expressions relevées par T2 concordent aux modalités qualitatives moyennes calculées sur T3.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Analyse bi-dimensionnelle
|
|
|
|
### matrice de correlation des variables quantitatives
|
|
|
|
```{r, fig.height = 18}
|
|
cr = cor(T[-c(37:39)])
|
|
corrplot(cr,method="ellipse", type="lower", bg = "lightgrey")
|
|
```
|
|
|
|
|
|
|
|
### Regression linéaire des variables 2 à 2 ???
|
|
|
|
|
|
|
|
### librairie biostatR
|
|
```{r}
|
|
library(BioStatR)
|
|
# Calculate eta² for Treatment 1
|
|
print("T1 vs T2")
|
|
eta2(T$T1_6H_R1, T$ExpT2)
|
|
eta2(T$T1_6H_R2, T$ExpT2)
|
|
|
|
print("T1 vs T3")
|
|
eta2(T$T1_6H_R1, T$ExpT3)
|
|
eta2(T$T1_6H_R2, T$ExpT3)
|
|
|
|
print("T2 vs T3")
|
|
eta2(T$T2_6H_R1, T$ExpT3)
|
|
eta2(T$T2_6H_R2, T$ExpT3)
|
|
|
|
```
|
|
Le calcul du rapport de correlation eta² bien notre observation de la grande similarité d'expression des genes traités avec T2 et T2 et la dissimilarité des expression des genes lorsque la plante est traitée avec T1 comparée à T2 et T3, chose normale au vu du peu de genes affectés par T1.
|
|
|
|
|
|
### table de contingence pour les variables quali 2 à 2, mosaic plot ?
|
|
```{r}
|
|
table(T$ExpT1,T$ExpT2)
|
|
table(T$ExpT1,T$ExpT3)
|
|
table(T$ExpT2,T$ExpT3)
|
|
```
|
|
Nouvelle confirmation de nos résultats de manière encore plus précise, on observe que T1 ne change pas l'expression de la très grande majorité des genes. Plus finement, on peut confirmer l'observation faite sur les boxplots tendant à dire que le peu de genes s'étant sous exprimés avec T1 se sont aussi sous-exprimés avec T2 et T3.
|
|
|
|
La grande valeur des effectifs partiels sur la diagonale de la table de contingence entre T2 et T3 montre bien la similarité de l'effet de ces deux traitement sur l'expression des genes.
|
|
|
|
|
|
|
|
## Menez une analyse en composantes principales où les Tt sH Rr sont les individus décrits par les gènes.
|
|
|
|
Pour faire cela, nous devons transposer la matrice de données originale qui elle décrivait les gènes (individus) en fonction des Tt sH Rr.
|
|
Nous décidons de faire directement une ACP sur un jeu de données centrées réduites pour que chaque variable s'exprime avec la même force dans les résultats et qu'ils soient lisibles.
|
|
|
|
```{r}
|
|
donnees_transposees = t(T[-c(37:39)])
|
|
res_pca<-PCA(donnees_transposees,scale.unit=TRUE,graph=FALSE)
|
|
res_pca$eig
|
|
fviz_eig(res_pca)
|
|
```
|
|
Ce graphique représente les valeurs propres de la matrice de corrélation du jeu de données centré réduites. L'inertie totale des données étant la somme des valeurs propres ( qui elles sont les inerties axiale associées à l'axe de vecteur directeur un vecteur propre associé ), chaque valeur propre est donc une fraction de l'inertie totale.
|
|
On voit qu'on dépasse 80% de l'inertie totale des points rien qu'avec les deux premieres valeurs propres, on en prend donc deux vectueurs propres associés respectivement à chacune de ces deux valeurs propres comme axes principaux de l'analyse.
|
|
|
|
|
|
```{r}
|
|
fviz_pca_ind(res_pca,label="all")
|
|
fviz_pca_var(res_pca,axes=c(1,2),label="none")
|
|
```
|
|
Contexte : les relevés aux heures sont décrits par les gènes ( les gènes sont considérés comme les variables).
|
|
|
|
- les genes proches d'un axe sont très représentés par celui-ci
|
|
- les genes dont l'angle entre eux est petit sont corrélés entre eux
|
|
|
|
#### Dire : Ce coté on voit bien qu'on est plus ce type de gènes et vers le haut c'est plutot ce type là etc...
|
|
## ON EST SENSE VOIR UN TRUC IMPORTANT D'APRES LA PROF MAIS JE VOIS RIEN
|
|
### interprétation globale du couple de graphes
|
|
|
|
On voit que les genes se polarisent principalement sur l'axe 1 dans un sens ou l'autre. Les flèches sont d'une longueur presque du rayon du cercle, indiquant une participation très forte des genes dans la variance expliquée par ces dimensions.
|
|
Il n'y a pas de tendance particulière sur la direction selon l'axe 2 des flèches : Dans chaque "polarité" de fleches selon l'axe 1, il y a des fleches dont la direction est negative d'autres positive selon l'axe 2.
|
|
|
|
Le traitement 1 est entièrement groupé sur des valeurs très negatives de l'axe 1. On remarque dans ce groupement la présence des T3 et T4 à la première heure de relevés d'expression des gènes.
|
|
|
|
|
|
axe 1: force du changement d'expression : si on sur-exprime/sous-exprime de beaucoup ( genre 0=>5) ou pas, polarisation ?
|
|
|
|
axe 2 : vers le haut => ça va changer d'expression bientot, vers le bas => ça se stabilise ( donc les genes pointant vers le haut changent d'expression, et ceux vers le bas ont tendance à rester plutot pareil )
|
|
|
|
#### On remarque que les traitements ne sont pas du tout décris de la même manière selon les horaires mais il y a une régularité d'apparition dans chaque tranche horaire.
|
|
|
|
|
|
### hypothèses sur la signification : qu'est-ce qu'ils ont en commun ces gènes qui pourrait décrire ces relevés aux différentes heures et les différents traitements
|
|
|
|
|
|
|
|
En ayant en tête les histogrammes de l'analyse descriptive, on pourrait y voir un axe représentant l'expression : les valeurs négatives portent les gènes dont l'expression relative est.
|
|
|
|
|
|
|
|
En regardant le graphe des individus (résultats aux heures de relevés), on a effectivement les heures groupées à des valeurs negatives de l'axe 1 correspondant aux relevés du traitement 1 qui, souvenons-nous toujours des histogrammes, ne change l'expression relative que de très peu de gènes.
|
|
|
|
Pour l'interprétation du second axe, les gènes semblent y être positivement et negativement corrélés quel que soit leur correlation avec l'axe 1.
|
|
En regardant les individus, on observe que plus l'heure est tardive, plus ils tendent vers des valeurs negatives sur l'axe 2. De plus, on observe que les points liés aux relevés du traitement 1 ne vont pas énormément vers les valeurs positives. Il semble donc que l'axe 2 soit indicateur des expressions des gènes sont susceptibles de changer.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### afin de visualiser les corrélations des variables intiales avec toutes les méta-variables (pas trs utile on a déjà le cercle)
|
|
```{r fig.height=18}
|
|
corrplot(res_pca$var$cor[1:50,],method="ellipse", type="lower", bg = "lightgrey")
|
|
```
|
|
|
|
|
|
MAIS C'EST INBUVABLE
|
|
|
|
|
|
|