Langage de programmation qui permet de :
Disponible sur Windows, MacOS, Linux
Historique :
Avantages :
Inconvénients :
read.table()
merge()
mydata[ , c("col1","col2")]
mean(x)
write.table()
lm(y ~ x)
t.test()
hist()
as.data.frame()
plot()
prcomp()
Un script R ne doit pas être une boîte noire !
Les travaux pratiques seront réalisés sur le serveur RStudio sur IFB core cluster.
https://rstudio.cluster.france-bioinformatique.fr/
Identifiez-vous avec votre login du cluster IFB core. Ceci vous permettra d’accéder à votre dossier personnel à partir de l’interface de RStudio.
Définir une variable qui indique le chemin du dossier de travail
S’il n’existe pas encore, créer le dossier de travail. (Commande Unix équivalente: “mkdir -p ~/intro_R”)
Alternative : créer le répertoire intro_R
en utilisant les fonctionnalités de RStudio
Aller dans ce dossier de travail. (Commande Unix équivalente: “cd ~/intro_R”)
Alternative : cliquer sur “Session/Set Working Directory/Choose Directory”
Où suis-je ? (Commande Unix équivalente: “pwd”)
Qu’y a-t-il par ici ? (Commande Unix équivalente: “ls”)
numeric
, double
integer
character
boolean
factor
très fréquent en R : on verra plus tard
[]
Une liste combine plusieurs sous-structures désignées par des noms ou des indices. Les sous-structures peuvent être de différents types (vecteurs, tableaux à deux dimensions, ou objets plus complexes).
Création d’une liste
Accés aux éléments éléments de liste par le nom
A <- data.frame(names = c("toto", "titi", "tutu"), values = c(1,2,4))
A[1, 2]
A[2, 1]
A[1:2, ]
A[A[,2] >= 3, ]
+
,-
,*
,\
,**
cos
,sin
,log
,log10
,exp
La commande download()
permet de télécharger un fichier à partir d’un serveur, et dir.create()
permet de créer un nouveau dossier dans l’espace de travail:
Charger le contenu du fichier “expression.txt” dans une variable nommée “exprs”.
Question : à quoi servent les options header
et sep
?
Réponse : appelez à l’aide (diapo suivante)
Notation alternative
La fonction print()
imprime l’ensemble des valeurs d’une variable.
Quand on travaille avec un tableau de données omiques comportant des milliers de lignes, ce n’est pas forcément très utile d’afficher toutes les valeurs d’une table de données.
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
11 ENSG00000119285 15783 17359 18591 20077
12 ENSG00000121680 3133 2775 2045 2796
13 ENSG00000125384 1380 3079 869 2419
14 ENSG00000129562 12089 7958 10708 7683
15 ENSG00000129932 1744 2247 1513 3104
16 ENSG00000134198 122 66 44 16
17 ENSG00000135452 635 427 662 291
18 ENSG00000140416 83 246 136 267
19 ENSG00000147274 16013 17642 15055 18804
20 ENSG00000148090 552 1062 615 1082
21 ENSG00000148248 62324 33973 56862 37710
22 ENSG00000157036 1225 1475 1275 1373
23 ENSG00000157869 1201 1034 1025 858
24 ENSG00000159433 31 788 30 675
25 ENSG00000161692 695 1825 746 1851
26 ENSG00000167005 26866 23111 24888 22661
27 ENSG00000168517 273 112 190 77
28 ENSG00000169570 202 181 207 209
29 ENSG00000172216 3515 1981 3204 3174
30 ENSG00000175221 1988 4788 2115 5306
31 ENSG00000183161 2238 974 2089 996
32 ENSG00000185324 1236 2163 1048 2024
33 ENSG00000188985 3415 1703 3587 2096
34 ENSG00000196867 209 189 293 192
35 ENSG00000197081 14741 36309 14941 29645
36 ENSG00000198586 1216 4545 1660 3932
37 ENSG00000214121 4044 2575 3019 2506
38 ENSG00000225630 1405 8135 1569 7866
39 ENSG00000226742 158 94 153 178
40 ENSG00000238241 90 43 122 143
41 ENSG00000248751 518 718 411 597
42 ENSG00000250202 261 163 177 191
43 ENSG00000251106 94 114 63 86
44 ENSG00000253991 77 78 134 92
45 ENSG00000254470 3025 3707 2558 4066
46 ENSG00000262814 15470 11450 11656 13821
47 ENSG00000267228 3801 2465 2787 2301
48 ENSG00000267699 1488 1086 1374 939
49 ENSG00000269293 424 162 310 120
50 ENSG00000279329 55 76 58 70
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
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
11 ENSG00000119285 15783 17359 18591 20077
12 ENSG00000121680 3133 2775 2045 2796
13 ENSG00000125384 1380 3079 869 2419
14 ENSG00000129562 12089 7958 10708 7683
15 ENSG00000129932 1744 2247 1513 3104
Dimensions
Noms des lignes et colonnes
id WT1 WT2 KO1 KO2
ENSG00000034510: 1 Min. : 31 Min. : 43.0 Min. : 30.0 Min. : 16.0
ENSG00000064201: 1 1st Qu.: 264 1st Qu.: 203.2 1st Qu.: 228.5 1st Qu.: 223.5
ENSG00000065717: 1 Median : 1338 Median : 1903.0 Median : 1324.5 Median : 2060.0
ENSG00000099958: 1 Mean : 9358 Mean : 6498.6 Mean : 8356.0 Mean : 6489.5
ENSG00000104164: 1 3rd Qu.: 3730 3rd Qu.: 4727.2 3rd Qu.: 3491.2 3rd Qu.: 4926.0
ENSG00000104783: 1 Max. :235960 Max. :94264.0 Max. :202381.0 Max. :91336.0
(Other) :44
Valeurs stockées dans la colonne nommée “WT1”
Notation alternative
Sélection de plusieurs colonnes.
Sélection de colonnes par leur indice
Exercice : améliorer ce graphique en modifiant la couleur de l’histogramme, en ajoutant un titre et des noms aux axes des abscisses et ordonnées.
Remarques
Remarque : le décalage entre boîtes nous indique que les librairies de comptage ne sont pas normalisées. Les méthodes de normalisation seront vues dans un cours ultérieur.
Exercice : améliorer ce graphique selon vos envies !
Sélection des lignes 4 et 11 du tableau des expressions
Indices des lignes correspondant aux IDs ENSG00000253991 et ENSG00000099958
Afficher les lignes correspondantes
On peut sélectionner à la fois des lignes et des colonnes en combinant les méthodes vues ci-dessus.
id WT1 WT2 KO1 KO2
10 ENSG00000118939 7022 2526 6269 3068
11 ENSG00000119285 15783 17359 18591 20077
12 ENSG00000121680 3133 2775 2045 2796
13 ENSG00000125384 1380 3079 869 2419
14 ENSG00000129562 12089 7958 10708 7683
15 ENSG00000129932 1744 2247 1513 3104
On peut également désigner les lignes ou les colonnes par leur nom.
Calcul de moyennes par ligne (rowMeans
) pour un sous-ensemble donné des colonnes (WT1 et WT2).
Ajout de colonnes avec les expressions moyennes des WT et des KO.
exprs$meanWT <- rowMeans(exprs[,c("WT1","WT2")])
exprs$meanKO <- rowMeans(exprs[,c("KO1","KO2")])
head(exprs) ## Check the result
Fold-change KO vs WT
Moyenne de tous les échantillons
\(M\) est le logarithme en base 2 du rapport d’expression.
\[M = log_{2} (\text{FC}) = log_{2} \left( \frac{\text{KO}}{\text{WT}} \right) = log_2 (\text{KO}) - log_2(\text{WT})\]
\(A\) (average intensity) est la moyenne des logarithmes des valeurs d’expression.
\[A = \frac{1}{2} log_2 (\text{KO} \cdot \text{WT}) = \frac{1}{2} \left( log_2 (\text{KO}) + log_2(\text{WT}) \right)\]
annot <- read.table(file = "data/annotation.csv", header = TRUE, sep = ";")
dim(annot) ## Vérifier les dimensions
head(annot) ## Afficher quelques lignes
Combien de gènes par chromosome ?
Question : combien de gènes sur le chromosome 8 ? Et sur le X ?
1ere étape: fusionner les deux tableaux exprs et annot
2eme étape: sous-ensemble des lignes pour lesquelles chr vaut 8
Autres fonctions graphiques de haut-niveau :
hist()
barplot()
contour()
image()
persp()
plot3d()
Fonctions graphiques de bas niveau : permettent d’ajouter des éléments à un graphique déjà ouvert.
points()
title()
legend()
abline()
lines
ma_fonction
: nom de la fonction (variable comme les autres)valeur1, valeur2
: arguments de la fonctionvaleur_retour
: la dernière ligne donne la valeur retournée par la fonctionQuel que soit le langage de programmation utilisé, il est crucial de documenter son code.
Tout est faisable avec R
Définir et comprendre l’opération mathématique/statistique avant de chercher la fonction R correspondante
R est un langage :
Une infinité de :
Comment documenter son code ?
En R, le caractère
#
marque le début d’un commentaire. Le texte qui suit est ignoré, jusqu’à la fin de la ligne.