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.
simpleaffy()
, il faut démarrer avec une session R:# Tres dur a faire... % R
Impilo > Analyse statistique > R GUI
.R> setwd("/path/to/cel/files")
Note: Cette méthode est commune à presque toutes les autres techniques d'analyse utilisant R/BioConductor.
covar_desc.txt
. Ce fichier doit contenir au minimum 2 colonnes. Comment ces colonnes sont formattées dépendra de la méthode utilisée pour construire l'objet AffyBatch
:read.affy
:ReadAffy
:Nom_fichier
fonctionnera très bien.read.affy
.covar_desc.txt
doit avoir les noms des fichiers dans l'ordre naturel dans la première colonne et la valeur associée du paramètre ensuite. Si vous mettez, par exemple, les contrôles en premier et les traités ensuite, s'ils ne se suivent pas naturellement, vous aurez des résultats très bizarres…Warning message: In readLines(filename) : incomplete final line found on 'covar_desc.txt'
AffyBatch
appelé data
en utilisant la méthode read.affy
de simpleaffy
:# 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>
AffyBatch
appelé data
en utilisant la méthode ReadAffy
de affy
:# 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>
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
.
simpleaffy
utilise les données obtenues pour ou à la suite d'une normalisation via l'algorithme MAS5, il faut créer un objet ExpressionSet
contenant les données normalisées provenant de notre objet data
:R> eset.mas5<-call.exprs(data,"mas5")
QCStats
(que nous appèlerons qcs
) qui contiendra toutes les données créées lors de la normalisation:R> qcs<-qc(data,eset.mas5)
simpleaffy
. Voici ces méthodes: ratios(qcs)
: rapport des sondes 5'-3' et 5'-M pour les sondes de contrôle de qualitéavbg(qcs)
: bruit de fonds moyenmaxbg(qcs)
: valeur maximale du bruit de fondsminbg(qcs)
: valeur minimale du bruit de fondsspikeInProbes(qcs)
: valeur des sondes témoins (spiked-in)qcProbes(qcs)
: valeurs pour les sondes de contrôle de qualité utilisant actine et GADPHpercent.present(qcs)
: pourcentage de probesets appelés présentsfs(qcs)
: facteur d'équivalencetarget(qcs)
: équivalence des cibles# par exemple, en utilisant ratios(qcs) R> qc.ratios<-ratios(qcs) R> write.table(qc.ratios,"monFichierRatios.txt")
plot(qcs)
. Ce graphe est très utile car il présente de manière facile à lire les données de contrôle de qualité de l'objet data
.# 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()
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 :
image()
: pour afficher les valeurs d'intensité log-transformées sur les puces et détecter les artéfacts d'hybridation.boxplot()
: pour obtenir un graphe “chandelier” des intensités pour chaque puce.AffyRNAdeg
/summaryAffydeg
/plotAffyRNAdeg
: pour vérifier la qualité de l'ARNm utilisé sur chaque puce
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:
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…
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()
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)