silico.biotoul.fr
 

M1 MABS TDB TD Transcriptome - Clustering

From silico.biotoul.fr

(Difference between revisions)
Jump to: navigation, search
m (Analyse d'un compendium de données de transcriptome de levure Saccharomyces cerevisiae)
m (Analyse d'un compendium de données de transcriptome de levure Saccharomyces cerevisiae)
Line 176: Line 176:
Dans cette partie, vous allez utiliser des données de transcriptome de levure obtenues pour environ 300 mutants (approche compendium). L'idée est d'effectuer un clustering hiérarchique des profils d'expression des gènes dans toutes ces conditions expérimentales afin d'identifier des ensembles de gènes co-exprimés et donc potentiellement co-régulés et qui pourraient donc participer à un même processus biologique. Une fois les gènes regroupés en cluster, le but est de caractériser ces ensembles de gènes par des méthodes de surreprésentation statistique pour identifier dans quel(s) processus biologique(s) ils sont impliqués. L'analyse plus fine d'un cluster de gènes pourra permettre par la suite d'attribuer un processus biologique potentiel pour un gène de fonction inconnue dont le profil d'expression est fortement corrélé avec ceux d'un groupe de gènes bien connus.
Dans cette partie, vous allez utiliser des données de transcriptome de levure obtenues pour environ 300 mutants (approche compendium). L'idée est d'effectuer un clustering hiérarchique des profils d'expression des gènes dans toutes ces conditions expérimentales afin d'identifier des ensembles de gènes co-exprimés et donc potentiellement co-régulés et qui pourraient donc participer à un même processus biologique. Une fois les gènes regroupés en cluster, le but est de caractériser ces ensembles de gènes par des méthodes de surreprésentation statistique pour identifier dans quel(s) processus biologique(s) ils sont impliqués. L'analyse plus fine d'un cluster de gènes pourra permettre par la suite d'attribuer un processus biologique potentiel pour un gène de fonction inconnue dont le profil d'expression est fortement corrélé avec ceux d'un groupe de gènes bien connus.
-
Les données que vous allez utiliser ont été rassemblées et analysées et ont fait l'objet d'une publication dont l'identifiant PubMed est 10929718. Retrouver et lire l'abstract sur [http://www.ncbi.nlm.nih.gov/sites/entrez?db=PubMed PubMed]. Télécharger les données sur les [[silico:enseignement/m1-mabs/transcriptome/ratios_1-300_log2.zip ratios d'expression pour les 300 conditions]] et les décompresser dans votre répertoire de travail. Importez-les ensuite dans MeV et effectuer un clustering hiérarchique. Remarque : vous pouvez ajuster la taille d'affichage des ratios dans le menu <tt>Display->Set element size</tt>.
+
Les données que vous allez utiliser ont été rassemblées et analysées et ont fait l'objet d'une publication dont l'identifiant PubMed est 10929718. Retrouver et lire l'abstract sur [http://www.ncbi.nlm.nih.gov/sites/entrez?db=PubMed PubMed]. Télécharger les données sur les [[silico:enseignement/m1-mabs/transcriptome/ratios_1-300_log2.zip|ratios d'expression pour les 300 conditions]] et les décompresser dans votre répertoire de travail. Importez-les ensuite dans MeV et effectuer un clustering hiérarchique. Remarque : vous pouvez ajuster la taille d'affichage des ratios dans le menu <tt>Display->Set element size</tt>.
-
Avant de réellement analyser ces données, il est préférable d'appliquer un certain filtrage. Pour simplifier pour ce TD, nous avons retenu seulement les gènes au moins 2x plus ou 2x moins exprimés dans au moins 5 conditions ainsi que les conditions pour lesquelles on a au moins 5 gènes 2x plus ou 2x moins exprimés. Télécharger les [[silico:enseignement/m1-mabs/transcriptome/selected_ratios_log2.zip données]] sélectionnées et refaites le clustering comme précédemment.
+
Avant de réellement analyser ces données, il est préférable d'appliquer un certain filtrage. Pour simplifier pour ce TD, nous avons retenu seulement les gènes au moins 2x plus ou 2x moins exprimés dans au moins 5 conditions ainsi que les conditions pour lesquelles on a au moins 5 gènes 2x plus ou 2x moins exprimés. Télécharger les [[silico:enseignement/m1-mabs/transcriptome/selected_ratios_log2.zip|données sélectionnées]] et refaites le clustering comme précédemment.
A présent, sélectionnez, enregistrez et analysez les clusters qui vous semblent pertinents. Pour l'analyse, utilisez l'outil [http://funspec.med.utoronto.ca/ YeastSpec/funSpec] en utilisant les sources de données suivantes : MIPS Functional Classification, MIPS Phenotypes, MIPS Subcellular Localization, MIPS Protein Complexes, et GO Biological Process. Interpréter les résultats obtenus.
A présent, sélectionnez, enregistrez et analysez les clusters qui vous semblent pertinents. Pour l'analyse, utilisez l'outil [http://funspec.med.utoronto.ca/ YeastSpec/funSpec] en utilisant les sources de données suivantes : MIPS Functional Classification, MIPS Phenotypes, MIPS Subcellular Localization, MIPS Protein Complexes, et GO Biological Process. Interpréter les résultats obtenus.

Revision as of 09:22, 24 October 2011

Contents

Analyse de transcriptome de souches de Pseudomonas aeruginosa ayant infecté des patients atteints de mucoviscidose

Etude basée sur la publicaton de Lei Yang et al. Bacterial adaptation during chronic infection revealed by independent component analysis of transcriptomic data.

Récupération des données

Récupérer les données relatives à cette publication sur GEO. Pour cela, il vous faudra retrouver dans la publication les références du jeu de données qu'ils ont utilisé.

Normalisation

Le format est celui d'Affymetrix (fichiers .CEL). Nous utiliserons donc la librarie affy de R/Bioconductor.

Après avoir désarchivé les données dans un répertoire, changer le répertoire courant dans R pour se placer dans le répertoire contenant les fichiers .CEL. L'ensemble des données contenues dans les fichiers GSMxxx.CEL est chargé sous R avec les commandes suivantes :

# chargement de la librairie
library(affy)
raw=ReadAffy()

En effet, par défaut, la fonction ReadAffy() charge tous les fichiers .CEL du répertoire courant.

On peut s'assurer du besoin de normaliser avec une boite à moustache :

boxplot(raw)

Pour la normalisation, nous utiliserons la fonction rma() (Robust Multiarray Averaging) de la librairie affy :

raw.rma=rma(raw)

L'objet raw.rma est de type ExpressionSet et contient l'ensemble des données normalisées. Nous nous intéresserons uniquement aux intensités que nous récupérons avec la commande suivante :

rma.expr=exprs(raw.rma)

Pour plus d'information sur le type ExpressionSet vous pouvez consulter l'aide :

?ExpressionSet

Le résultat de la normalisation peut aussi se visualiser avec une boite à moustache :

par(mfrow=c(2,1))
boxplot(raw)
boxplot(rma.expr)

Données annexes sur les hybridations

Afin de plus facilement analyser les données, les informations de la publication concernant le stade ou phénotype (early, late, mucoid) des bactéries a été compilé dans le fichier suivant :

Table 1 : Contenu du fichier chips_info.txt.
FileName Experience color
GSM774085_CF30-1979a.CEL CF30.1979.late red
GSM774086_CF30-1979b.CEL CF30.1979.late red
GSM774086_CF30-1979c.CEL CF30.1979.late red
GSM774088_CF43-1973a.CEL CF43.1973.early green
... ... ...

Charger ces données dans un objet que l'on appellera info.

Clustering des profils

Pour effectuer des analyses de clustering, nous utiliserons la fonction heatplot de la librairie made4. Cette fonction reprend les fonctionnalités de la fonction heatmap vue dans un TD précédent. Elle permet notamment d'utiliser une méthode de distance entre profils d'expression basé sur le coefficient de corrélation de Pearson.

Effectuer un premier clustering avec les paramètres par défaut :

# chargement de la librairie
library(made4)
# on revient à un seul graphique
par(mfrow=c(1,1))
# affichage du clustering
heatplot(rma.expr)

Si l'affichage est lent, vous pouvez n'afficher que le dendrogramme sur les colonnes (hybridations) :

heatplot(rma.expr, dend='column')

Nous allons ensuite changer les couleurs pour un meilleur contraste :

heatplot(rma.expr, dend='column', lowcol="blue",highcol="yellow")

Puis, ajouter les informations concernant les puces que vous avez normalement chargé dans l'objet info :

heatplot(rma.expr, dend='column', lowcol="blue",highcol="yellow", ColSideColors=as.character(info$color),cols.default=FALSE)
  • Est-ce que les réplicats sont regroupés dans les mêmes clusters ?
  • Est-ce que les différents stades/phénotypes forment de clusters ?

Par défaut, la méthode pour mesurer la distance entre 2 profils est basée sur le coefficient de corrélation de Pearson (1 - r). Essayer avec une autre méthode de distance : la distance euclidienne

heatplot(rma.expr, dend="column", lowcol="blue",highcol="yellow", ColSideColors=as.character(info$color),cols.default=FALSE, distfun="euclidean")
  • Que pensez vous du résultat : vous paraît-il meilleur ?

Par défaut, la méthode pour identifier les clusters à fusionner est average linkage. Essayer avec une autre méthode de distance entre clusters : single linkage

heatplot(rma.expr, dend="column", lowcol="blue",highcol="yellow", ColSideColors=as.character(info$color),cols.default=FALSE, method="single")
  • Que pensez vous du résultat : vous paraît-il meilleur ?

Essayer également avec la méthode complete linkage :

heatplot(rma.expr, dend="column", lowcol="blue",highcol="yellow", ColSideColors=as.character(info$color),cols.default=FALSE, method="complete")
heatplot(rma.expr, dend="column", lowcol="blue",highcol="yellow", ColSideColors=as.character(info$color),cols.default=FALSE, method="ward")

Consultez l'aide de la fonction heatplot. Y a-t-il d'autres méthodes disponibles ? Essayez-les et notez le résultat qui vous semble le meilleur.

Préparation des données

Chaque expérience a été menée en triplicat. Afin de réaliser le clustering, nous allons faire la moyenne des intensités obtenues pour chaque réplicat :

rma.mean=by(t(rma.expr), INDICES=info$Experience, FUN=mean)
mat=matrix(unlist(rma.mean),nrow=nrow(rma.expr),byrow=F,dimnames=list(rownames(rma.expr),names(rma.mean)))

La fonction by() de R permet d'appliquer une fonction (ici mean) par modalité d'un facteur (ici correspondant à info$Experience dans lequel on a attribué le même nom aux réplicats). Le résultat est un objet un peu commode : nous avons pour chaque expérience, un vecteur contenant le niveau d'expression pour chaque spot. Nous re-transformons cette objet en matrice spots x conditions avec la fonction matrix.

Afin de pouvoir utiliser les couleurs affectées à chaque stade/phénotype, il nous faut sélectionner une ligne sur trois de l'objet info :

# récupération d'une ligne sur trois
mat.info=info[ seq(1,78,by=3), 2:3]
# affectation du nom de puce aux ligne
rownames(mat.info)=mat.info$Experience
# affectation de la couleur en fonction du nom de la puce 
mat.colors=mat.info[ colnames(mat), "color" ]

Vous pouvez maintenant réeffectuer des clustering en faisant varier le paramètre method et le paramètre distfun. Lesquels vous donnent le meilleur résultat ?

Avant de passer à un autre logiciel, nous avons une dernière manipulation à effectuer : notre matrice d'expression contient les noms des probesets et non ceux des gènes. Pour récupérer les noms des gènes nous aurons besoins du fichier de GEO décrivant le microarray (ici GPL84). Récupérer ce fichier au format soft sur GEO. Puis charger le de la manière suivante :

# on ne tient pas compte des 27 premières constituant une en-tête (paramètre skip)
# on ne garde que les colonnes 1 (petite descr), 2 (nom le + commun), et 11 (identifiant systématique, celui qui nous intéresse)
GPL=read.table("GPL84.annot", header=TRUE, sep="\t", skip=27, fill=TRUE, row.names=1, quote="")[,c(1,2,11)]
# on se débarrase de la dernière ligne qui contient !platform_table_end                                    
GPL=GPL[-5901,]

La colonne 11 (platform_ORF) que nous avons gardé contient soit l'identifiant du gène soit rien. Nous allons donc l'utiliser pour ne garder que les gènes :

rownames(mat) = GPL$Platform_ORF
mat.gene = mat[ rownames(mat)!='', ]
# on sauvegarde pour l'ouvrir dans MeV
write.table(mat.gene,"GSE31227_mean.txt", col.names=TRUE, row.names=TRUE, quote=FALSE, sep="\t")

Clustering des profils avec MeV

Nous allons maintenant utiliser un logiciel un peu plus convivial que la ligne de commande R. Trouver dans le menu démarrer le logiciel qui s'appelle MeV pour MultiExperiment Viewer.

Charger ensuite le jeu de données que vous avez créé à l'étape précédente (GSE31227_mean.txt) à partir du menu File->Load Data.

Explorer l'interface utilisateur. Vous trouverez notamment un menu proposant différentes méthodes de clustering, ainsi qu'un menu permettant d'appliquer différents tests statistiques (Student, ANOVA).

Essayer de transformer les données (menu Adjust Data et d'ajuster les couleurs (menu Display) pour un meilleur rendu. A quoi correspond la fonction Adjust Data->Gene/Row adjustments->Divide Genes/Rows by SD ? la fonction Sample/Column Adjustments->Mean Center Samples/Columns ?

Effectuer des clustering k-means et hiérarchiques avec différents paramètres (nombre de clusters, mesures de distance entre profils et entre cluster).

Quand vous serez satisfait de votre clustering hiérarchique, sélectionnez certains clusters, notamment ceux pour lesquels l'expression des gènes contrastent entre les stades/phénotypes early, late et mucoid. Pour cela, il vous faut cliquer sur l'arbre (normalement à gauche des profils) pour sélectionner un cluster ; un click droit sur le cluster propose un menu contextuel permettant de sauvegarder le groupe de gènes ou échantillons dans le gestionnaire de clusters (Cluster Manager) avec la fonction store cluster.

Pour étudier si les clusters que vous avez sélectionnés sont enrichis avec certaines annotations, analysez ensuite les à l'aide du programme sook que vous trouverez sur l'environnement mobyle hébergé au LMGM. Ce programme permet de comparer statistiquement votre cluster soit aux ensembles de gènes annotés avec un même terme de la Gene Ontology, soit aux ensembles de gènes partageant un même mot-clé dans UniProt.

Analyse d'un compendium de données de transcriptome de levure Saccharomyces cerevisiae

Dans cette partie, vous allez utiliser des données de transcriptome de levure obtenues pour environ 300 mutants (approche compendium). L'idée est d'effectuer un clustering hiérarchique des profils d'expression des gènes dans toutes ces conditions expérimentales afin d'identifier des ensembles de gènes co-exprimés et donc potentiellement co-régulés et qui pourraient donc participer à un même processus biologique. Une fois les gènes regroupés en cluster, le but est de caractériser ces ensembles de gènes par des méthodes de surreprésentation statistique pour identifier dans quel(s) processus biologique(s) ils sont impliqués. L'analyse plus fine d'un cluster de gènes pourra permettre par la suite d'attribuer un processus biologique potentiel pour un gène de fonction inconnue dont le profil d'expression est fortement corrélé avec ceux d'un groupe de gènes bien connus.

Les données que vous allez utiliser ont été rassemblées et analysées et ont fait l'objet d'une publication dont l'identifiant PubMed est 10929718. Retrouver et lire l'abstract sur PubMed. Télécharger les données sur les ratios d'expression pour les 300 conditions et les décompresser dans votre répertoire de travail. Importez-les ensuite dans MeV et effectuer un clustering hiérarchique. Remarque : vous pouvez ajuster la taille d'affichage des ratios dans le menu Display->Set element size.

Avant de réellement analyser ces données, il est préférable d'appliquer un certain filtrage. Pour simplifier pour ce TD, nous avons retenu seulement les gènes au moins 2x plus ou 2x moins exprimés dans au moins 5 conditions ainsi que les conditions pour lesquelles on a au moins 5 gènes 2x plus ou 2x moins exprimés. Télécharger les données sélectionnées et refaites le clustering comme précédemment.

A présent, sélectionnez, enregistrez et analysez les clusters qui vous semblent pertinents. Pour l'analyse, utilisez l'outil YeastSpec/funSpec en utilisant les sources de données suivantes : MIPS Functional Classification, MIPS Phenotypes, MIPS Subcellular Localization, MIPS Protein Complexes, et GO Biological Process. Interpréter les résultats obtenus.

Données