Ants, Bees, Genomes & Evolution @ Queen Mary University London
TP4: Analyse de donnees d'expression
Merci d'envoyer a les reponses aux questions en surlignees avec [TP4 Bioinfo] comme sujet. Vu qu'il necessite que plusieurs logiciels soient installes, il est conseille de le faire en salles Pol204.2 ou Bio1928.
Votre sujet de recherche sont les tissus musculaires. En particulier, vous voulez caracteriser le coeur d'un point de vue moleculaire.
A travers une recherche bibliographique vous trouvez une etude extensive des transcriptomes humains et murins. Peut-etre qu'il y aura des donnees interessantes! En 2004, Su et al., ont quantifie l'expression de genes au sein de 79 tissus humains et 61 tissus de souris a l'aide de puces a ADN. Pour l'Homme, ils se sont servis d'une puce Affymetrix basee sur la puce Affymetrix Human U133A. Dans l'article (tres cite) figure un lien vers les donnees brutes.
Mise en place des donnees
Telechargez le jeu de donnees Human U133A + GNF1H (MAS5-condensed).
Decompressez ce jeu de donnees. Depuis Excel, ouvrez le fichier de donnees GNF1Hdata.txt qui est au format texte, chaque colonne etant separee par une "tabulation". Essayez de comprendre le contenu du fichier.
Seuls certains tissus musculaires vous interessent. Dans un nouveau fichier Excel, regroupez les donnees concernant vos 5 tissus fetiches:
- Heart
- SmoothMuscle
- CardiacMyocytes
- SkeletalMuscle
- Tongue
N'oubliez pas d'y coller aussi la premiere colonne, comportant les identifiants des sondes/genes (ex: 1007_s_at, 1053_at, 117_at...).
Et afin d'eviter des problemes lies a la transformation des donnees par la suite, toutes les cellules ayant la valeur 0 doivent etre remplacees par 1.
Enregistrez ce jeu de donnees reduit au format texte.
Normalisation des donnees
Vous savez que les donnees de puce a ADN se distinguent par leur variabilite (lies a l'efficacite de l'extraction d'ARNm, de l'incorporation et la degradation de fluorochromes, aux volumes de pipetage, a l'efficacite d'hybridation, du lavage post-hybridation...).
Pour tenter de garder seulement la variabilite biologique entre les puces Affymetrix que nous utilisons, elles ont ete normalisees avec l'algorithme standard d'Affymetrix, MAS5.0.
Visualisation des donnees
Ouvrez R, changez de repertoire de travail pour que le repertoire de travail soit celui ou se trouve votre jeu de donnees reduit. Chargez ce jeu de donnees reduit dans R
> data = read.table("myData.txt", sep="\t", header=T, row.names=1)
Verifiez que ca ait bien marche en regardant les 10 premieres 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 donnees boxplot(log(data), col=rainbow(n=20))
nous indiquent:
- que le niveau d'expression est bas pour la plupart des genes
- que les medianes des niveaux d'expression sont homogenes entre puces
Dans un cas reel on ferrait plusieurs autres analyses preliminaires pour valider la qualite des donnees. Plusieurs packages Bioconductor pourront nous aider.
Transformation des donnees
Nous avons des valeurs d'expression absolues pour chaque gene. Deux questions biologiques peuvent se poser:
- au sein d'un tissus, quels genes sont les plus (ou les moins) exprimes?
- quels genes sont differemment exprimes entre tissus?
On se penche sur la deuxieme. Il sera plus facile de travailler avec le log2 des donnees d'expression relatives. Avant de travailler sur notre jeu de donnees 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 gene. Divisez chaque valeur d'expression par la moyenne du gene.
Prenez le logarithme en base 2. (vous trouverez la fonction log(,2) avec Inserer fonction dans Excel):
Dans R, effectuons la meme transformation sur le jeu de donnees 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 donnees relatives permet de mieux voir la distribution des donnees.
> dataLog2Relative = log2(dataRelative) > boxplot(dataLog2Relative)
Selection de genes permettant de differencier les tissus
5 tissus * 2 microarrays * plus de 33000 transcrits = beaucoup de donnees a analyser!
Pour travailler sur un jeu de donnees reduit, on va choisir les 200 genes qui differencient au mieux les 5 tissus. L'algorithme eBayes nous permet de le faire dans R. eBayes fait partie de BioConductor/limma qui est *la* reference pour le traitement de donnees de microarray. (attention on s'accroche).
> library(limma)
On precise 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 precise que toutes comparaisons de tissus 2 a 2 doivent etre 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 parametres du modele sont ajustes en fonction de nos donnees:
> fit = lmFit(dataRelative, design)
les differences significatives sont recherchees. Attention, le B de eBayes() doit etre majuscule!
> eBayesResultat = eBayes(contrasts.fit(fit, contrast.matrix))
on trie les resultats par p-value du test de F:
> eBayesResultatTrie = eBayesResultat[order(eBayesResultat$F.p.value,decreasing=FALSE),]
on exporte les 200 genes qui differencient au mieux les tissus etudies 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)
Clustering
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 genes qui differencient au mieux les tissus. Important: il faut indiquer ou commencent les donnees d'expression. Cette cellule est tres loin a droite (cf la capture d'ecran suivante):
Effectuez un clustering hierarchique des donnees. Bouton HCL
. Le resultat se trouve dans la colonne de gauche. HCL / HCL Tree
.
En cliquant sur une branche de l'arbre, vous pouvez n'en selectionner qu'une partie. Selectionnez le groupe de genes specifiquement exprimes dans le coeur). Click-droit puis Save Cluster vous permet d'enregistrer leurs donnees. Sous Excel, ne gardez que la liste des "genes" (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 genes "coeur-specifiques" ressemblera a la suivante:
209111_at 207508_at 214836_x_at 201137_s_at 220734_s_at 215379_x_at ...
Test de sur- ou sous-representation de termes d'annotation fonctionnelle
Il est possible de tester si au sein d'une liste de genes, certaines categories Gene Ontology sont sur-representees par rapport a une reference.
Connectez-vous a DAVID. Dans la colonne de gauche, sous Upload / Step 1 collez votre liste de genes. Il s'agit d'identifiants Affymerix. AFFY_ID. C'est une Gene List. Une fois uploadee, rajoutez HG-U133A comme liste Background.
Functional Annotation Clustering.
Conclusion
Regardez dans les donnees supplementaires du papier.
Question bonus pour les rapides
Y a-t-il des genes exprimes significativement plus fortement dans la langue que dans tous des autres echantillons? 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.
Compte-rendu
Merci d'envoyer a les reponses aux questions en surlignees avec [TP4 Bioinfo] comme sujet.