Chapter 9 Analyse d’expression différentielle : MA-plot
9.1 C’est quoi un MA plot
9.1.1 Nos data
head(exprs, 10)
## id WT1 WT2 KO1 KO2
## 1 ENSG00000034510 235960 94264 202381 91336
## 2 ENSG00000064201 116 71 64 56
## 3 ENSG00000065717 118 174 124 182
## 4 ENSG00000099958 450 655 301 472
## 5 ENSG00000104164 4736 5019 4845 4934
## 6 ENSG00000104783 9002 8623 7720 7142
## 7 ENSG00000105229 1295 2744 1113 2887
## 8 ENSG00000105723 3353 7449 3589 7202
## 9 ENSG00000116199 2044 4525 2604 4902
## 10 ENSG00000118939 7022 2526 6269 3068
9.1.2 La théorie
Le MA plot représente le lien entre différence d’expression et intensité moyenne. - M (magnitude) est le logarithme en base 2 du rapport d’expression (“log2 fold-change”) - A (average intensity) est la moyenne des logarithmes des valeurs d’expression.
log2 fold change, “magnitude”
M = log2(KO/WT) = log2(KO) - log2(WT)
average log2 value
A = ½ log2(KO x WT) = ½ (log2(KO) + log2(WT))
9.2 Calculs sur les colonnes
- Calcul de moyennes par ligne (
rowMeans
) pour un sous-ensemble donné des colonnes (WT1 et WT2).
rowMeans(exprs[ , c("WT1","WT2")])
## [1] 165112.0 93.5 146.0 552.5 4877.5 8812.5 2019.5 5401.0
## [9] 3284.5 4774.0 16571.0 2954.0 2229.5 10023.5 1995.5 94.0
## [17] 531.0 164.5 16827.5 807.0 48148.5 1350.0 1117.5 409.5
## [25] 1260.0 24988.5 192.5 191.5 2748.0 3388.0 1606.0 1699.5
## [33] 2559.0 199.0 25525.0 2880.5 3309.5 4770.0 126.0 66.5
## [41] 618.0 212.0 104.0 77.5 3366.0 13460.0 3133.0 1287.0
## [49] 293.0 65.5
- Ajout de colonnes avec les expressions moyennes des WT et des KO
$meanWT <- rowMeans(exprs[ , c("WT1","WT2")])
exprs$meanKO <- rowMeans(exprs[ , c("KO1","KO2")]) exprs
- Vérification des résultats
head(exprs)
## id WT1 WT2 KO1 KO2 meanWT meanKO
## 1 ENSG00000034510 235960 94264 202381 91336 165112.0 146858.5
## 2 ENSG00000064201 116 71 64 56 93.5 60.0
## 3 ENSG00000065717 118 174 124 182 146.0 153.0
## 4 ENSG00000099958 450 655 301 472 552.5 386.5
## 5 ENSG00000104164 4736 5019 4845 4934 4877.5 4889.5
## 6 ENSG00000104783 9002 8623 7720 7142 8812.5 7431.0
- Fold-change KO vs WT
$FC <- exprs$meanKO / exprs$meanWT exprs
- Vérification des résultats
head(exprs)
## id WT1 WT2 KO1 KO2 meanWT meanKO FC
## 1 ENSG00000034510 235960 94264 202381 91336 165112.0 146858.5 0.8894478
## 2 ENSG00000064201 116 71 64 56 93.5 60.0 0.6417112
## 3 ENSG00000065717 118 174 124 182 146.0 153.0 1.0479452
## 4 ENSG00000099958 450 655 301 472 552.5 386.5 0.6995475
## 5 ENSG00000104164 4736 5019 4845 4934 4877.5 4889.5 1.0024603
## 6 ENSG00000104783 9002 8623 7720 7142 8812.5 7431.0 0.8432340
- Moyenne de tous les échantillons
$mean <- rowMeans(exprs[ , c("WT1", "WT2", "KO1", "KO2")]) exprs
- Vérification des résultats
head(exprs)
## id WT1 WT2 KO1 KO2 meanWT meanKO FC
## 1 ENSG00000034510 235960 94264 202381 91336 165112.0 146858.5 0.8894478
## 2 ENSG00000064201 116 71 64 56 93.5 60.0 0.6417112
## 3 ENSG00000065717 118 174 124 182 146.0 153.0 1.0479452
## 4 ENSG00000099958 450 655 301 472 552.5 386.5 0.6995475
## 5 ENSG00000104164 4736 5019 4845 4934 4877.5 4889.5 1.0024603
## 6 ENSG00000104783 9002 8623 7720 7142 8812.5 7431.0 0.8432340
## mean
## 1 155985.25
## 2 76.75
## 3 149.50
## 4 469.50
## 5 4883.50
## 6 8121.75
9.3 MA-plot : log2FC vs intensité
9.4 Appliquer une fonction sur les lignes/colonnes
9.4.1 Appliquer une fonction (moyenne, variance, …) sur chaque ligne d’un tableau
<- apply(exprs[ , c("WT1", "WT2", "KO1", "KO2")], 1, mean)
mean_per_row
<- apply(exprs[ , c(2, 3, 4, 5)], 1, mean)
mean_per_row
<- apply(exprs[ , -1 ], 1, mean)
mean_per_row
<- apply(exprs[ , which(sapply(exprs, class) != "factor")], 1, mean)
mean_per_row
<- apply(exprs[ , c("WT1", "WT2", "KO1", "KO2")], 1, var) var_per_row