Merci d'envoyer à
les réponses aux questions en surlignées avec [TP4 Bioinfo] comme sujet. Vu qu'il nécessite que plusieurs logiciels soient installés, il est conseillé de le faire en salles Pol204.2 ou Bio1928.
Votre sujet de recherche sont les tissus musculaires. En particulier, vous voulez caractériser le coeur d’un point de vue moléculaire.
À travers une recherche bibliographique vous trouvez une étude extensive des transcriptômes humains et murins. Peut-être qu’il y aura des données intéressantes! En 2004, Su et al., ont quantifié l'expression de gènes au sein de 79 tissus humains et 61 tissus de souris à l'aide de puces à ADN. Pour l'Homme, ils se sont servis d'une puce Affymetrix basée sur la puce Affymetrix Human U133A. Dans l’article (très cité) figure un lien vers les données brutes.
Téléchargez le jeu de données Human U133A + GNF1H (MAS5-condensed).
Décompressez ce jeu de données. Depuis Excel, ouvrez le fichier de données GNF1Hdata.txt qui est au format texte, chaque colonne étant séparée par une “tabulation”. Essayez de comprendre le contenu du fichier.
Seuls certains tissus musculaires vous intéressent. Dans un nouveau fichier Excel, regroupez les données concernant vos 5 tissus fétiches:
N'oubliez pas d'y coller aussi la première colonne, comportant les identifiants des sondes/gènes (ex: 1007_s_at, 1053_at, 117_at...).
Et afin d’éviter des problèmes liés à la transformation des données par la suite, toutes les cellules ayant la valeur 0 doivent être remplacées par 1.
Enregistrez ce jeu de données réduit au format texte.
Vous savez que les données de puce à ADN se distinguent par leur variabilité (liés à l’efficacité de l'extraction d'ARNm, de l'incorporation et la dégradation de fluorochromes, aux volumes de pipetage, à l’efficacité d'hybridation, du lavage post-hybridation...).
Pour tenter de garder seulement la variabilité biologique entre les puces Affymetrix que nous utilisons, elles ont été normalisées avec l'algorithme standard d'Affymetrix, MAS5.0.
Ouvrez R, changez de répertoire de travail pour que le répertoire de travail soit celui ou se trouve votre jeu de données réduit. Chargez ce jeu de données réduit dans R
> data = read.table("myData.txt", sep="\t", header=T, row.names=1)
Vérifiez que ça ait bien marché en regardant les 10 premières lignes.
> data[1:10,]
Heart Heart.1 CardiacMyocytes CardiacMyocytes.1 SmoothMuscle
1007_s_at 1872 2320 1867 2184 2081
1053_at 170 318 293 396 303
117_at 137 333 418 497 319
121_at 3957 4458 3674 5075 3925
1255_g_at 303 247 268 338 247
1294_at 570 1404 847 1159 1275
1316_at 675 358 171 1068 273
1320_at 70 75 269 98 133
1405_i_at 659 365 20 26 22
1431_at 242 222 159 683 188
SmoothMuscle.1 SkeletalMuscle SkeletalMuscle.1 TONGUE TONGUE.1
1007_s_at 1932 1211 1171 2559 2741
1053_at 214 38 127 156 31
117_at 232 450 583 375 366
121_at 3335 2928 2733 3953 3107
1255_g_at 209 251 253 174 347
1294_at 1197 658 893 755 888
1316_at 276 354 245 721 488
1320_at 258 138 122 283 107
1405_i_at 23 80 42 42 29
1431_at 201 94 320 163 106
Le graphe boxplot(data) et les données boxplot(log(data), col=rainbow(n=20)) nous indiquent:
Dans un cas réel on ferrait plusieurs autres analyses préliminaires pour valider la qualité des données. Plusieurs packages Bioconductor pourront nous aider.
Nous avons des valeurs d'expression absolues pour chaque gène. Deux questions biologiques peuvent se poser:
On se penche sur la deuxième. Il sera plus facile de travailler avec le log2 des données d’expression relatives. Avant de travailler sur notre jeu de données entier, reprenez l’exemple suivant sous Excel:
gene tissu A tissu B tissu C Gp-9 600 900 300 actin 200 800 2400
Calculez le niveau d’expression moyen de chaque gène. Divisez chaque valeur d'expression par la moyenne du gène.
Prenez le logarithme en base 2. (vous trouverez la fonction log(,2) avec Insérer fonction dans Excel):
Dans R, effectuons la même transformation sur le jeu de données entier:
> expressionMoyennePourChaqueGene = (data$Heart + data$Heart.1 + data$CardiacMyocytes + data$CardiacMyocytes.1 + data$SmoothMuscle + data$SmoothMuscle.1 + data$SkeletalMuscle + data$SkeletalMuscle.1 + data$TONGUE + data$TONGUE.1) / 10
> dataRelative = data / expressionMoyennePourChaqueGene > boxplot(dataRelative)
Ce boxplot des données relatives permet de mieux voir la distribution des données.
> dataLog2Relative = log2(dataRelative) > boxplot(dataLog2Relative)
5 tissus * 2 microarrays * plus de 33000 transcrits = beaucoup de données à analyser!
Pour travailler sur un jeu de données réduit, on va choisir les 200 gènes qui différencient au mieux les 5 tissus. L’algorithme eBayes nous permet de le faire dans R. eBayes fait partie de BioConductor/limma qui est *la* référence pour le traitement de données de microarray. (attention on s’accroche).
> library(limma)
On précise que pour chaque tissus, on a deux microarrays, et on les nomme avec leurs initiales (H = heart, C = CardiacMyocyte...):
> design = model.matrix(~ -1 + factor(c(1,1,2,2,3,3,4,4,5,5)))
> colnames(design) = c("H", "C", "Sm", "Sk", "T")
on précise que toutes comparaisons de tissus 2 à 2 doivent être faites:
> contrast.matrix = makeContrasts(H-C, H-Sm, H-Sk, H-T, C-Sm, C-Sk, C-T, Sm-Sk, Sm-T, Sk-T, levels=design)
les paramètres du modèle sont ajustés en fonction de nos données:
> fit = lmFit(dataRelative, design)
les différences significatives sont recherchées. Attention, le B de eBayes() doit être majuscule!
> eBayesResultat = eBayes(contrasts.fit(fit, contrast.matrix))
on trie les résultats par p-value du test de F:
> eBayesResultatTrie = eBayesResultat[order(eBayesResultat$F.p.value,decreasing=FALSE),]
on exporte les 200 gènes qui différencient au mieux les tissus étudiés vers un fichier texte:
> meilleursGenes =merge(eBayesResultatTrie[1:200,], dataLog2Relative, by.x=0, by.y=0) > write.table(meilleursGenes, "top200genes-log2relative.txt",sep="\t", row.names=FALSE)
Ouvrez le logiciel MeV. File / New Multiple Array Viewer. Load Data. Dans la barre de menu, sous File Format Descriptions, choissisez Tab-Delimited Multiple Sample Files (TDMS) *.*. Ouvrez votre fichier des 200 gènes qui différencient au mieux les tissus. Important: il faut indiquer où commencent les données d’expression. Cette cellule est très loin à droite (cf la capture d’écran suivante):

Effectuez un clustering hiérarchique des données. Bouton HCL. Le résultat se trouve dans la colonne de gauche. HCL / HCL Tree.
En cliquant sur une branche de l’arbre, vous pouvez n’en sélectionner qu’une partie. Selectionnez le groupe de gènes spécifiquement exprimés dans le coeur). Click-droit puis Save Cluster vous permet d’enregistrer leurs données. Sous Excel, ne gardez que la liste des “gènes” (Row.names) qui se terminent en _at. Il s’agit en fait d’identifiants Affymetrix. On ne gardera pas les identifiants qui commencent par gnf1h (ceux qui commencent par gnf1h sont des identifiants “maison” dont on ne se servira pas par la suite).
Votre liste de gènes "coeur-specifiques" ressemblera à la suivante:
209111_at 207508_at 214836_x_at 201137_s_at 220734_s_at 215379_x_at ...
Il est possible de tester si au sein d'une liste de gènes, certaines catégories Gene Ontology sont sur-représentées par rapport à une référence.
Connectez-vous à DAVID. Dans la colonne de gauche, sous Upload / Step 1 collez votre liste de gènes. Il s’agit d’identifiants Affymerix. AFFY_ID. C’est une Gene List. Une fois uploadée, rajoutez HG-U133A comme liste Background.
Functional Annotation Clustering.
Regardez dans les données supplémentaires du papier.
Y a-t-il des gènes exprimés significativement plus fortement dans la langue que dans tous des autres échantillons? Astuce 1: il faudra refaire un ajustement de modele lineaire avec:
> contrast.matrix = makeContrasts(T-H, T-C, T-Sm, T-Sk, levels=design)
Astuce 2: les fonctions decideTests(eBayesResultat) et ?apply sont tes amis.... summary() peut servir aussi.
Merci d'envoyer à
les réponses aux questions en surlignées avec [TP4 Bioinfo] comme sujet.