silico.biotoul.fr
 

M1 MABS TDB TD Transcriptome - Analyse differentielle

From silico.biotoul.fr

(Difference between revisions)
Jump to: navigation, search
m (Filtrage des spots)
m
Line 61: Line 61:
'''Définissez cette fonction dans votre session R.'''
'''Définissez cette fonction dans votre session R.'''
 +
 +
 +
== Lecture des fichiers <tt>Genepix</tt> ==
 +
 +
La fonction <tt>read.maimages</tt> permet de lire les fichiers Genepix :
 +
<source lang="rsplus">
 +
RG = read.maimages(files = targets$FileName, source = "genepix", wt.fun=myFilter) # wt.fun pour ''weight function'' qui sert a spécifier un mode de filtrage
 +
</source>
 +
 +
'''Chargez l'ensemble des données correspondant aux trois réplicats à 15 minutes dans la variable RG.'''
 +
 +
Tel que défini ci-dessus, l'objet RG peut-être vu comme une armoire contenant toute l'information contenue dans les fichiers Genepix. Les noms des différents tiroirs de cette armoire sont les suivants :
 +
<source lang="rsplus">
 +
names(RG)
 +
[1] "R" "G" "Rb" "Gb" "weights" "targets" "genes" "source" "printer"
 +
</source>
 +
 +
Plus précisément,
 +
* <tt>RG$R</tt> est un tableau spots <tt>x</tt> puces contenant les valeurs du signal rouge,
 +
* <tt>RG$G</tt> est un tableau spots <tt>x</tt> puces contenant les valeurs du signal vert,
 +
* <tt>RG$Rb</tt> est un tableau spots <tt>x</tt> puces contenant les valeurs du bruit de fond rouge,
 +
* <tt>RG$Gb</tt> est un tableau spots <tt>x</tt> puces contenant les valeurs du bruit de fond vert,
 +
* <tt>RG$weights</tt> est un tableau spots <tt>x</tt> puces contenant les valeurs 1 pour les spots conservés lors du filtrage et 0 sinon,
 +
* <tt>RG$targets</tt> contient les information du fichier <tt>targets.txt</tt>,
 +
* <tt>RG$genes</tt> est lui-même une armoire dont les différents tiroirs contiennent des informations sur chaque gène,
 +
* <tt>RG$source</tt> rappelle le logiciel d'analyse d'images d'où viennent les données,
 +
* <tt>RG$printer</tt> décrit la structure d'une puce (taille d'un bloc d'aiguilles, ...).
 +
 +
 +
== Taux de filtrage ==
 +
 +
On peut utiliser <tt>RG$weights</tt> pour mesurer l'impact de la procédure de filtrage. Par exemple, la commande suivante calcule, pour chaque puce, le pourcentage de gènes non-filtrés :
 +
<source lang="rsplus">
 +
# unFiltered reçoit les taux de spots non-filtrés pour chaque puce
 +
unFiltered = apply(RG$weights,MARGIN=2,FUN=mean)
 +
# Affichage des éléments de unFiltered arrondis à 2 décimales
 +
round(unFiltered,2)
 +
</source>
 +
 +
 +
== Nom et identifiant d'un gène ==
 +
 +
Les noms des différents tiroirs de l'armoire nommée <tt>RG$genes</tt> sont accessibles par la commande suivante :
 +
<source lang="rsplus">
 +
names(RG$genes)
 +
[1] "Block" "Row" "Column" "ID" "Name"
 +
</source>
 +
 +
Pour obtenir les identifiants des 10 premiers gènes, on peut utiliser le tiroir nommé <tt>RG$genes$ID</tt> :
 +
<source lang="rsplus">
 +
RG$genes$ID[1:10]
 +
</source>
 +
 +
Dans les fichiers .gpr que vous avez téléchargés, les noms des gènes ne sont pas renseignés, ils sont en fait déjà indiqués au niveau des identifiants mais pas au niveau des noms de gène. '''Assurez-vous en et affectez les identifiants aux noms de gènes avec les commandes suivantes :'''
 +
<source lang="rsplus">
 +
# Affiche les '''identifiants''' des 10 premiers spots (de 1 à 10)
 +
RG$genes$ID[1:10]
 +
# Affiche les '''noms''' des 10 premiers spots
 +
RG$genes$Name[1:10]
 +
# Affecte/recopie les identifiants des spots dans les noms des spots
 +
RG$genes$Name=RG$genes$ID
 +
 +
'''Remarque :''' La manipulation précédente est spécifique à notre jeu de données et doit être adaptée à chaque analyse.

Revision as of 08:14, 17 October 2011

La cryopréservation est une méthode largement utilisée pour le stockage à long terme de nombreuses cellules vivantes. Cette méthode implique des traitements de congélation et de décongélation qui causent des dommages aux cellules vivantes, voire souvent, leur mort. Les puces à ADN permettent de mesurer les niveaux d'expression de milliers de gènes simultanément et de suivre les réponses biologiques à travers le niveau d'expression de presque tous les gènes de l'organisme. Nous allons analyser la réponse de cellules de levure après cryopréservation à partir de données de transcriptome publiées dans une étude de l'impact de la crypréservation sur la levure Odani et al. 2003.


Contents

Récupération des données à partir d'un entrepôt de données de transcriptome

Il existe plusieurs entrepôts de données pour les données de transcriptome. Les principaux sont Gene Expression Omnibus (GEO) du NCBI, ArrayExpress de l'EBI, ainsi que le Stanford Microarray Database (SMD). A partir de GEO du NCBI, retrouvez les données associées à la publication Odani et al. 2003.

Vous devriez trouver la série GSE9404. Lisez la page décrivant les données, puis téléchargez les données brutes (GSM239212..GSM239220) dans un répertoire que vous aurez créé pour vos analyses. Ensuite, décompressez ces fichiers (soit avec la commande gunzip sous linux, soit avec un logiciel de compression/décompression tel que 7-Zip.


Importation des données avec limma

Le package limma est spécialement conçu pour analyser les données de biopuces bi-couleurs. Il permet l'importation de fichiers de sortie des logiciels d'analyse d'image les plus courants dans le domaine des biopuces, la normalisation des données et l'analyse différentielle (pour une présentation détaillée, voir la page web http://bioinf.wehi.edu.au/limma/).

Le chargement du package est ensuite commandé par :

# Chargement du package limma
library(limma)

Remarque : limma dispose d'un guide utilisateur accessible et pédagogique, incluant notamment de nombreux exemples d'utilisation. Pour y accéder :

limmaUsersGuide()

Afin d'éviter d'avoir à indiquer de manière répétée le répertoire de travail contenant les fichiers de données au cours de la procédure d'importation des données, on peut le définir comme répertoire de travail pour l'ensemble de la session :

  • Sous Windows, vous pouvez changer le répertoire de travail à partir du menu Fichier puis changer le répertoire courant...
  • Sous Linux et Windows !
# sous Windows, remplacer "C:\Users\etudiant\My Documents\Transcriptome\" par l'endroit où vous avez placé vos fichiers 
setwd("C:\Users\etudiant\My Documents\Transcriptome\") 
# de même sous linux :
setwd("/home/etudiant/Documents/Transcriptome/")

Le format des données de biopuces nécessaire à toute analyse statistique est un tableau dont les lignes sont associées à des puces et les colonnes à des gènes. Or, le plus souvent le point de départ de l'analyse repose sur autant de fichiers de sortie d'un logiciel d'analyse d'images qu'il y a de puces. Le package limma prévoit donc une procédure d'importation de ces fichiers conduisant à la création d'un tableau de données. La conversion de plusieurs fichiers en un seul tableau pucesxgènes nécessite quelques indications permettant de piloter l'ordonnancement des valeurs d'expressions géniques dans le jeu de données. Ces informations sont contenues dans un fichier supplémentaire nommé dans la suite targets.txt.


Filtrage des spots

Lors de la lecture des fichiers de sortie de logiciels d'analyse d'image, certaines fonctionnalités de limma permettent de contrôler la qualité des données d'expressions en chaque spot. En effet, ces fichiers contiennent eux-mêmes différentes indications sur la qualité des spots. Par exemple, les fichiers Genepix sont structurés comme des tableaux de données dont les lignes correspondent aux spots et les colonnes à des caractéristiques des données en chacun de ces spots. On trouve parmi ces caractéristiques :

  • Flags : type de Flag
  • F635 Median : intensité médiane pour le signal rouge (F pour foreground, 635 pour la longueur d'onde 635nm)
  • F532 Median : intensité médiane pour le signal vert
  • F635 Mean : intensité moyenne pour le signal rouge
  • F532 Mean : intensité moyenne pour le signal vert
  • B635 Median : intensité médiane du bruit de fond pour le rouge (B pour background)
  • ...

Il est possible de créer sa propre fonction de filtrage de spots : cette fonction, dont l'argument principal est le tableau spots x caractéristiques d'un fichier Genepix, prendra la valeur 1 si un spot est valide et 0 sinon (correspond en fait au poids affecté à chacun des spots). Par exemple, si on souhaite supprimer les spots dont les flags de Genepix sont inférieurs ou égaux à -49, il suffit de créer la fonction de filtrage suivante :

# X désigne une ligne du tableau du fichier Genepix (un spot) 
# okFLAG vaut TRUE si Flags>-49, FALSE sinon
# la fonction as.numeric convertit une valeur logique
# en valeur numérique selon la règle suivante : TRUE vaut 1, FALSE vaut 0
myFilter = function(X) { 
   okFLAG = X$Flags > -49; 
   as.numeric(okFLAG) 
}

Définissez cette fonction dans votre session R.


Lecture des fichiers Genepix

La fonction read.maimages permet de lire les fichiers Genepix :

RG = read.maimages(files = targets$FileName, source = "genepix", wt.fun=myFilter) # wt.fun pour ''weight function'' qui sert a spécifier un mode de filtrage

Chargez l'ensemble des données correspondant aux trois réplicats à 15 minutes dans la variable RG.

Tel que défini ci-dessus, l'objet RG peut-être vu comme une armoire contenant toute l'information contenue dans les fichiers Genepix. Les noms des différents tiroirs de cette armoire sont les suivants :

names(RG) 
[1] "R" "G" "Rb" "Gb" "weights" "targets" "genes" "source" "printer"

Plus précisément,

  • RG$R est un tableau spots x puces contenant les valeurs du signal rouge,
  • RG$G est un tableau spots x puces contenant les valeurs du signal vert,
  • RG$Rb est un tableau spots x puces contenant les valeurs du bruit de fond rouge,
  • RG$Gb est un tableau spots x puces contenant les valeurs du bruit de fond vert,
  • RG$weights est un tableau spots x puces contenant les valeurs 1 pour les spots conservés lors du filtrage et 0 sinon,
  • RG$targets contient les information du fichier targets.txt,
  • RG$genes est lui-même une armoire dont les différents tiroirs contiennent des informations sur chaque gène,
  • RG$source rappelle le logiciel d'analyse d'images d'où viennent les données,
  • RG$printer décrit la structure d'une puce (taille d'un bloc d'aiguilles, ...).


Taux de filtrage

On peut utiliser RG$weights pour mesurer l'impact de la procédure de filtrage. Par exemple, la commande suivante calcule, pour chaque puce, le pourcentage de gènes non-filtrés :

# unFiltered reçoit les taux de spots non-filtrés pour chaque puce
unFiltered = apply(RG$weights,MARGIN=2,FUN=mean) 
# Affichage des éléments de unFiltered arrondis à 2 décimales
round(unFiltered,2)


Nom et identifiant d'un gène

Les noms des différents tiroirs de l'armoire nommée RG$genes sont accessibles par la commande suivante :

names(RG$genes) 
[1] "Block" "Row" "Column" "ID" "Name"

Pour obtenir les identifiants des 10 premiers gènes, on peut utiliser le tiroir nommé RG$genes$ID :

RG$genes$ID[1:10]

Dans les fichiers .gpr que vous avez téléchargés, les noms des gènes ne sont pas renseignés, ils sont en fait déjà indiqués au niveau des identifiants mais pas au niveau des noms de gène. Assurez-vous en et affectez les identifiants aux noms de gènes avec les commandes suivantes :

# Affiche les '''identifiants''' des 10 premiers spots (de 1 à 10) 
RG$genes$ID[1:10]
# Affiche les '''noms''' des 10 premiers spots
RG$genes$Name[1:10]
# Affecte/recopie les identifiants des spots dans les noms des spots 
RG$genes$Name=RG$genes$ID
 
'''Remarque :''' La manipulation précédente est spécifique à notre jeu de données et doit être adaptée à chaque analyse.
 
 
 
 
 
===Le fichier <tt>targets.txt</tt>===
 
Le fichier <tt>targets.txt</tt> doit contenir les colonnes suivantes :
* <tt>FileName</tt> donnant le nom des fichiers d'images,
* <tt>Cy3</tt> donnant la modalité du facteur marquée en vert,
* <tt>Cy5</tt> donnant la modalité du facteur marquée en rouge.
 
Les autres colonnes sont optionnelles. On donne le fichier <tt>targets_15min.txt</tt> suivant correspondant à la première série de réplicats effectués 15 minutes après décongélation.
{| border="1" cellspacing="0"
|+ Table 1 : Contenu du fichier [[Media:targets15min.txt|targets15min.txt]].
|- 
! FileName	!! SlideNumber	!! Cy3	!! Cy5
|- 
|  GSM239212.gpr	|| 1	|| ref	|| 15min
|-
| GSM239213.gpr	|| 2	|| ref	|| 15min
|-
| GSM239214.gpr	|| 3	|| ref	|| 15min
|}
 
 
La commande suivante permet de lire le fichier <tt>targets.txt</tt> et de créer un objet R, nommé ici <tt>targets</tt>, héritant de l'information contenue dans le fichier :
<source lang="rsplus">
# Lecture de targets.txt
targets=readTargets("Targets15min.txt",sep="\t")

L'argument sep définit le type de séparateur utilisé pour délimiter les colonnes dans le fichier targets.txt. Ici, on précise que le séparateur est la tabulation (\t).

Créez ou récupérez le fichier targets puis chargez le dans un object R targets.

Remarque : pour obtenir de l'aide sur une commande ou fonction :

# affiche l'aide de la fonction readTargets
help(readTargets)

Données