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.