Table des matières

R/Bioconductor: Utilisation des librairies affy() simpleaffy()

Introduction

La librarie affy(1) est le point d'entrée de l'analyse des données Affymetrix dans R; c'est à travers elle que la lecture et la normalisation des données se font. Elle procure également certaines métriques de contrôle de la qualité:

La librairie simpleaffy(2) quant à elle, est un wrapper (si quelqu'un à une traduction intelligente de ce terme (encapsuleur??), s.v.p., nous en aviser :-) ) qui permet une utilisation plus aisée de la librarie affy, en l'accélérant grâce à du code C qui est exécuté en arrière-plan. simpleaffy utilise les données générées via la normalisation des données brutes par l'algorithme MAS5 implémenté via affy pour calculer des métriques de contrôle de la qualité, par exemple:

Dans cette section, nous utiliserons les méthodes de contrôle de la qualité obtenues en utilisant la fonction qc de simpleaffy. Les fonctions de normalisation seront vu ailleurs.

Procédure

Préparation et démarrage de R

# Tres dur a faire...
% R
R> setwd("/path/to/cel/files")

Création de l'objet AffyBatch

Note: Cette méthode est commune à presque toutes les autres techniques d'analyse utilisant R/BioConductor.

Warning message:
In readLines(filename) :
  incomplete final line found on 'covar_desc.txt'
# Charger la librarie
R> library(simpleaffy)
# Vous verrez des messages passés 
# à l'écran, montrant que affy()
# est installé
R> data<-read.affy(covdesc="covar_desc.txt")
# Ca va prendre un certain temps...
# La console revient
R>
# Charger la librarie
R> library(affy)
# Vous verrez des messages passés 
# à l'écran, montrant que affy()
# est installé
R> data<-ReadAffy(phenoData="covar_desc.txt")
# Ca va prendre un certain temps...
# La console revient
R>

Utilisation des méthodes de contrôle de la qualité de simpleaffy

La classe simpleaffy étant un wrapper simplifiant/accélérant l'utilisation de affy, seulement certaines des méthodes ont une application dans le contrôle de qualité. La plupart des ces méthodes donnent des valeurs numériques exportables mais la méthode plot procure un graphique très informatif sur l'état des données pour chaque puce. Comme simpleaffy appelle affy dans son exécution, il est aussi possible d'accéder aux méthodes de contrôle de la qualité disponibles dans affy.

R> eset.mas5<-call.exprs(data,"mas5")
R> qcs<-qc(data,eset.mas5)
# par exemple, en utilisant ratios(qcs)
R> qc.ratios<-ratios(qcs)
R> write.table(qc.ratios,"monFichierRatios.txt")
# pour affichage a l'ecran
R>plot(qcs)
R>savePlot("plotQc.jpeg", type="jpeg")
#
# Alternative: directement envoye en fichier
R>jpeg("plotQc.jpeg")
R>plot(qcs)
R>dev.off()

Utilisation des méthodes de contrôle de la qualité de affy

affy contient également des méthodes de contrôle de qualité qui ne sont pas accessible via la méthode qc de simpleaffy. Les méthodes vraiment intéressantes sont :

Il n'est pas plus difficile de les utiliser que dans le cas des méthodes fournies par simpleaffy; il faut simplement faire attention aux détails suivants:

Utilisation de la fonction image()

image retourne par défaut des images (!!), chacune représentant la valeur log-transformée de l'intensité pour chaque sonde sur la puce. Par conséquent, la densité d'information est très grande et il faut faire attention au format de sortie. Par défaut, cette méthode présente les image à la console en demandant après chaque rendu, de presser sur <Return> pour voir la page suivante. Si on veut un affichage de 2×2, on utiliserait le code suivant:

# determinons une grille de 2x2
R> par(mfrow=c(2,2))
# Effectuons le rendu
R> image(data)

Soyez patient: sur les puces au contenu très dense (par ex.: U133 v2), ça va prendre un certain temps à dessiner. Lorsqu'une page est finalement complétée, la fonction demande de presser <Enter> pour passer à la page suivante. Si vous connaissez un moyen de la sauver, ou, mieux de encore, de créer une boucle pour tout sauvegarder dans un fichier ou plusieurs fichiers, laissez-le nous savoir…

Utilisation de la fonction boxplot()

Cette fonction permet la création d'un graphe en boîte à moustache (c'est le nom en français, vraiment!) où chaque puce est représentée par une boîte dont la limite inférieure représente le 1er quartile, le limite supérieure représentant le 3ème quartile et la barre noire étant la valeur médiane. Les lignes sous et au-delà de cette boîte sont les “moustaches” soient les valeurs extrêmes pour cette puce. Ce graphe est très utile pour déterminer la distribution des signaux dans une puce mais aussi entre les puces et permet de voir l'impact de la normalisation sur cette distribution.

Pour le créer, simplement faire ceci:

R> boxplot(data)

Pour sauvegarder le graphe dans un fichier:

R> jpeg("monBoxPlot.jpg")
R> boxplot(data)
R> dev.off()

Utilisation des fonctions d'évaluation de la dégradation de l'ARNm

Les fonctions d'analyse de la dégradation de l'ARNm utilisent le fait que les différentes sondes d'un probeset se retrouvent étalées de manière ordonnée du 5' au 3' d'un ARNm. Comme la dégradation progressive de l'ARNm se fait principalement à partir de l'extrémité 5', on s'attend à observer que les intensités des sondes en 5' devraient être moindre que celles en 3'. En utilisant le fichier CDF, qui nous donne la position des sondes sur la puce ainsi que leur séquence d'intérêt, on peut créer un graphe représentant la valeur moyenne pour chaque position d'une sonde dans un probeset donné.

# La methode qui cree les donnees
R> degr<-AffyRNAdeg(data)
 
# La methode qui creera le graphe
R> plotAffyRNAdeg(degr)

Il est très simple d'analyser ce graphe: aucune puce ne devrait avoir un profil distinct des autres. Toutes les lignes devraient être relativement parallèle. Si ce n'est pas le cas, utilisez la méthode suivante pour obtenir un tableau des données et rejeter la puce fautive:

R> summaryAffyRNAdeg(degr)

Références