• Aucun résultat trouvé

Cr´eations et traitement de jeux de donn´ees simul´es

Dans le document Nicolas Edwards (Page 68-76)

A.2. Scripts R

A.2.4. Cr´eations et traitement de jeux de donn´ees simul´es

G ´en ´eration de jeux de donn ´ees simul ´es

La g´en´eration des jeux de donn´ees simul´es se fait avec le fichier generate random network.R. La fonction parallel.generation qu’il contient prend pour argument un nombre de simulations, un r´epertoire, un nom de fichier, puis quelques caract´eristiques des graphes que l’on veut cr´eer et `a partir desquels on veut simuler des donn´ees, et les sauvegarde dans le r´epertoire sp´ecifi´e et avec le nom de fichier choisi. Cette fonction g´en`ere un graphe vrai , puis, grˆace `a des fonctions du package simone, un assez grand nombre de donn´ees (expression de g`enes simul´ees) dont l’inf´erence devrait amener `a retrouver le graphe vrai , puis sauvegarde le tout dans un fichier.

########## --- Description --- ##########

# inputs:

# number: number of random graphs to be simulated

# dir: where to save the generated graphs?

# n: vector (length 2) with the number of observations in a given task

# d: number of genes

68

Nicolas Edwards Programmes r´ealis´es

# p: proportion of edges in the network

# add.e: proportion of permuted edges (from mother network)

# outputs: list (having length number) with tg1 , tg2 being the true networks and cond1 , cond2 being the simulated data; saved in corresponding directory

Nicolas Edwards Programmes r´ealis´es

Importation de jeux de donn ´ees simul ´es

L’importation des jeux de donn´ees simul´es `a partir des fichiers cr´ees par generate random network.R se fait `a l’aide des fichiers import simu-ll1.r, import simu-nv1.r etimport simu-nv2.r. Lors de cette importation, les variables (qui simulent des g`enes) sont identifi´es par des num´eros pour permettre des comparaisons avec le vrai r´eseau qui a permis de g´en´erer les donn´ees. Le fichierimport simu-nv2.rest pr´esent´e comme exemple ; les autres fichiers suivent cette trame.

l o a d( " ../D a t a/s i m u l a t i o n s/simu - nv2 . R d a t a " )

# give names to variables (genes) to avoid a bug s i m u s< - l a p p l y( simus , f u n c t i o n( x ) {

Inf ´erence de r ´eseaux sur les donn ´ees simul ´ees

Au vu des grandes quantit´es de donn´ees `a traiter, une parall´elisation de l’inf´erence `a partir des donn´ees simul´ees `a ´et´e mise en place, ce qui per-met de diviser le temps de calcul par le nombre de coeurs (processeurs) dis-ponibles. Concr`etement la parall´elisation du traitement s’effectue avec les fichiers parallel-export genenet-indep.R, parallel-export glasso-indep.R, . . .

70

Nicolas Edwards Programmes r´ealis´es Les fichiersparallelfonctionnent tous `a peu pr`es de la mˆeme mani`ere : tout d’abord, la liste des 100 jeux de donn´ees transcriptomiques simul´ees est pass´e en argument `a la fonctionparallel.inference qui, `a l’aide du package doMCet de la fonctionforeach, parall´elise des appels aux fonctions d’inf´erence de graphes d´ecrites pr´ec´edemment, et permet de r´ecup´erer la liste des 100 graphes inf´er´es. Ces programmes ont ´et´e ex´ecut´es en des temps raisonnables sur un serveur de calcul 32 cœurs. Un exemple de fichier de parall´elisation (ici, pour la m´ethode de [Sch¨afer and Strimmer, 2005], en faisant appel `a la fonction creategraph.genenet) est donn´e ci-dessous :

# save(all.graphs ,file="../Results/simulations/simu -ll1 -genenet -indep.

RData")

# # Function call for nv1

# source("import_simu -nv1.r")

# all.graphs < - parallel.inference(simus)

# save(all.graphs ,file="../Results/simulations/simu -nv1 -genenet -indep.

RData")

# Function call for nv2

# source("import_simu -nv2.r")

# all.graphs < - parallel.inference(simus)

# save(all.graphs ,file="../Results/simulations/simu -nv2 -genenet -indep.

RData")

Comparaison de r ´eseaux obtenus par simulation de donn ´ees

Il s’agit de comparer les r´eseaux obtenus par inf´erence des donn´ees simul´ees aux

vrai graphe utilis´e pour g´en´erer ces donn´ees. C’est le but de la fonction compare.methods.simul2true du fichier compare methods simul2true.R. Cette fonc-tion calcule, pour chacun des 100 graphes simul´es par jeu de donn´ees, et chaque m´ethode

Nicolas Edwards Programmes r´ealis´es de la liste pass´ee en param`etre, la diff´erence pr´ecise en nombre d’arˆetes entre les graphes inf´er´es par la m´ethode consid´er´ee et le vrai graphe duquel les donn´ees sont issues : sont calcul´es, le nombre de vrais positifs, de vrai n´egatifs, de faux n´egatifs et de faux positifs, deux indicateurs de performance (la pr´ecision et le recall, obtenus `a partir des 4 premi`eres valeurs), et finalement le nombre d’arˆetes communes aux deux conditions dans les vraisgraphes et dans les graphes inf´er´es. L’ensemble de ces informations est

´ecrite dans un fichier au format .csv. Cette fonction ´edite ´egalement le nuage de points pr´ecision/recall, qui permet de comparer de les performances des diverses m´ethodes sur un type de graphe donn´e, avec une couleur pour chaque m´ethode pass´ee en argument.

#

---#

#

# This file is made to compare different graph inference

# methods. It is method -agnostic and only requires igraph R graph objects.

#

#

#

#

# It serves two related purposes : to compute for each graph given in input ,

# several quantitative characteristics and export them as numbers ,

# and to plot the Precision - Recall curve of a series of simulated graphs ,

# in comparison to a "true" graph ,

# (used to generate simulated data that must be preemptively exported .)

#

# INPUT : 5 arguments , 3 have defaults (d:)

# - dir.graphs : (d:"../Results/simulations/") the directory in which the simulations are. They have to be named : "simu -", dataset ,"-", method , ".RData", and contain "all.graphs", list of simulated graphs ($graph1 , $graph2 for each component)

# - dir.truth (d:"../Data/simulations/") Directory containing the original graph files. They have to be named : "simu -", dataset , ".

Rdata"

# - dir.out (d:"../Results/comparison") Directory to which the 4 files will be exported.

# - dataset< - the name of the dataset (for finding the correct file and display)

# - methods= A list of methodsone wants to compare , for example :c("

genenet -indep", "simone -friedman -bic")

#

# It contains two functions : one is called at runtime to prepare the graph , and then for

# each method in the input argument , it calls the second function which computes the characteristics

# [no. True Positives], [no. False Positives], [no. True Negatives], [ no. False Negatives], [Precision], [Recall] for each (condition 1, condition 2, and sum/average))

72

Nicolas Edwards Programmes r´ealis´es

# and at the end the inter -condition difference for : the "true"

graphs , and each simulation

# are binded and written out.

# - 1 .png file containing the Precision -Recall curve (size : width

=600)

Nicolas Edwards Programmes r´ealis´es

# creating a dataframe with all the info for cond1 , cond2 and 1+2

# Display Venn ’s diagram for the first simulation only: to be improved

74

Nicolas Edwards Programmes r´ealis´es

# plot.new()

# draw.pairwise.venn(fp1[1]+tp1[1], fn1[1]+tp1[1], tp1[1], category=c("Tests Positive", "Is positive"))

# dev.print(png , file=paste(dir.out , "display_one_vennDiag -", dataset ,"-",method ,"-simul2true.png",sep=""), width =600)

# the height of the legend may need accomodation if the number of datasets increases significantly

# compare.methods.simul2true(dir.out="../Results/comparison/", dir.

graphs="../Results/simulations/", dir.truth="../Data/simulations/", dataset="nv2", methods=c("genenet -indep", "simone -friedman -bic", "

simone intertwined","therese friedman bic d5a0dot5", "therese -friedman -bic -d10 -a0dot5"))

# compare.methods.simul2true(dir.out="../Results/comparison/", dir.

graphs="../Results/simulations/", dir.truth="../Data/simulations/",

Nicolas Edwards Programmes r´ealis´es

dataset="ll1", methods=c("genenet -indep", "simone -friedman -bic", "

simone -intertwined"))

# compare.methods.simul2true(dir.out="../Results/comparison/", dir.

graphs="../Results/simulations/", dir.truth="../Data/simulations/", dataset="nv1", methods=c("genenet -indep", "simone -friedman -bic", "

simone -intertwined"))

# compare.methods.simul2true(dir.out="../Results/comparison/therese/", dir.graphs ="../Results/simulations/", dir.truth="../Data/

simulations/", dataset="nv2", methods=c("therese -friedman -bic -d5-a0dot25", "therese -friedman -bic -d10 --d5-a0dot25", "therese -friedman -bic d5a0dot5", "therese friedman bic d10 a0dot75", "therese friedman -bic -d5-a0dot5", "therese -friedman --bic -d10 -a0dot75"))

La pr´esente documentation a ´et´e r´edig´ee en anglais. Son objectif est dans un premier temps, de servir `a l’utilisateur final de ce script, et dans un second temps de montrer comment cet ensemble de scripts fonctionne, pour qu’un utilisateur avanc´e puisse se le r´eapproprier si besoin est.

Dans le document Nicolas Edwards (Page 68-76)

Documents relatifs