• Aucun résultat trouvé

´

Etant donn´e que le graphe de recombinaison ancestral est un processus markovien, il est assez simple de programmer sa reconstruction. Une fois les donn´ees et les param`etres lus, il suffit d’ins´erer le TIM dans le premier in- tervalle entre marqueurs, de construire K graphes afin d’´evaluer la vraisem- blance sur cet intervalle, et de continuer ainsi pour chaque intervalle. Pour construire un graphe, il suffit d’´etudier les ´ev´enement possibles, de calculer leur probabilit´e, de choisir un ´ev´enement au hasard, de calculer et m´emoriser le poids de l’´ev´enement pour la vraisemblance, de mettre `a jour les donn´ees et les param`etres, et de recommencer jusqu’`a ce que l’ancˆetre commun de toutes les s´equences soit trouv´e. Enfin, il suffit de chercher le maximum de vraisemblance, et d’imprimer les r´esultats. Nous allons maintenant d´ecrire plus formellement l’algorithme. La notation “f()” est utilis´ee pour d´enoter une fonction f qui d´epend de certains param`etres.

// Algorithme d´ebut{

LireDonn´ees() lecture des donn´ees

LireParam`etres() lecture des param`etres

pour (p=1 `a L− 1){ pour chacun des intervalles

cr´eer Dist[] modification du vecteur des distances

cr´eer Y [] modification de la matrice

des haplotypes

pour (k=1 `a K){ pour chacune des K simulations

tant que(n>1){ tant que le MRCA n’est pas trouv´e

PossCoaId() ´etudier les coalescences de types

identiques possibles

diff´erents possibles

PossMut() ´etudier les mutations possibles

PossRecom() ´etudier les recombinaisons possibles

Choisir´Ev´enement () choisir un ´ev`enement

Mise`AJour() mise `a jour des donn´ees

} } }

EcrireResultat() ´ecriture des r´esultats

} Fin

Le programme commence par lire le nom du fichier contenant les param`etres, entr´e sur la ligne de commande. Dans ce fichier de param`etres, le programme lit les informations suivantes:

1) le nom du fichier de donn´ees, 2) u, le taux de mutation,

3) r1, r2, . . . , rL−1, les distances entre marqueurs (de position connue), 4) K, le nombre de simulations,

5) N , la taille effective de la population,

6) ξ, le poids que l’on accorde aux ´ev´enements de recombinaison,

7) κ, le param`etre de la distribution exponentielle pour une taille de popu- lation variable,

8) le nombre de points pour lesquels on veut ´evaluer la vraisemblance, 9) les ´eventuels nombres de points sp´ecifi´es par intervalle,

10) le nom du fichier dans lequel les r´esultats seront ´ecrits, 11) ν, le nombre maximum d’it´erations dans un graphe,

12) le choix des recombinaisons: dans chaque s´equence et chaque intervalle, ou en utilisant l’approximation de la section 3.11.

Les donn´ees lues sont les haplotypes (Y), le trait (T), la multiplicit´e des s´equences (n), et les distances entre marqueurs (r), dont voici un exemple:

Y=    0 0 0 1 0 0 1 0 0 0 0 1    , T =    0 0 1 1    , n =    2 3 1 2    , r = [ 0.02, 0.06 ] .

Dans la matrice Y, de dimension d× (L − 1), chaque ligne est une s´equence, et chaque colonne un marqueur. Ainsi, par exemple, la premi`ere s´equence est (0, 0, 0) et la seconde (1, 0, 0). Notons que la repr´esentation informatique que nous utilisons pour un site primitif ancestral est un 0, pour un site mutant un 1 et pour un site non ancestral un 9, mais dans le texte qui suit nous repr´esentons un site non ancestral par le symbole “•” afin de faciliter la lecture. La ii`eme equence de Y est un cas si Ti = 1, et un t´emoin si Ti = 0. Aussi, la ii`eme s´equence de

Y a pour multiplicit´e ni (le ii`eme ´el´ement de n). Ainsi, la quatri`eme s´equence de

Y qui est (0, 0, 1) est un cas et a pour multiplicit´e 2. Enfin, puisque nous avons trois marqueurs, nous avons deux distances entre marqueurs (voir r): la distance entre le premier et le second marqueur est 0.02, et la distance entre le second et le troisi`eme est 0.06.

Une fois les donn´ees et les param`etres lus, pour chaque intervalle entre mar- queurs p (p = 1, . . . , L− 2), on modifie les haplotypes et le vecteur de distance:

(a) Donn´ees brutes 0.02 0.06

(b) Intervalle 1 r1= 0.01 r2= 0.01 r3= 0.06 (c) Intervalle 2 r1= 0.02 r2= 0.03 r3= 0.03

Figure 4.2.1. Sch´ema d’insertion du TIM ( ) dans la s´equence des mar- queurs observ´es de position connue ( ). Les chiffres indiquent des distances entre loci. (a) Donn´ees brutes: 3 marqueurs. Modification des s´equences et des distances pour l’´evaluation de la vraisemblance dans l’intervalle entre marqueurs (b) un (c) deux.

pour l’intervalle p, on ins`ere dans chacune des d s´equences de Y un nouveau marqueur, dont la valeur se trouve dans le vecteur T, exactement entre les mar- queurs p et p + 1. Il faut en cons´equence ajuster le vecteur des distances en divisant la distance rp existante en deux (car la valeur conductrice est au mi-

lieu de l’intervalle entre marqueur p), et en rajoutant la mˆeme distance apr`es l’´el´ement p du vecteur r, comme illustr´e dans la figure 4.2.1.

Voici un exemple, o`u l’on travaille sur l’intervalle 2 (p = 2) avec les donn´ees ci-dessus: r = 0.02 0.06 , Y=    0 0 0 1 0 0 1 0 0 0 0 1    , r =  0.030.02 0.03 , Y =    0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 1    .

Par la suite, on construit K graphes avec Y et r. Notons que la dimension de Y est maintenant d×L, et que dans toutes les ´etapes de reconstruction qui suiv- ent, nous travaillons avec les L marqueurs. La reconstruction du graphe est tr`es simple: `a chaque pas, les mˆemes ´etapes se r´ep`etent (le processus est markovien). Il faut commencer par regarder tous les ´ev´enements possibles: coalescence de s´equences du mˆeme type (PossCoaId), coalescence de s´equences diff´erentes (Poss- CoaDi), mutation (PossMut), et recombinaison (PossRecom).

PossCoaId(): ´Ev´enement de coalescence pour des s´equences identiques Ci. Une co-

alescence correspond `a l’´ev´enement o`u deux s´equences trouvent un ancˆetre commun. Un tel ´ev´enement est possible pour la s´equence i si cette s´equence a une multiplicit´e d’au moins deux (ni ≥ 2).

PossCoaDi(): ´Ev´enement de coalescence de s´equences diff´erentes Cijk. Cet ´ev´enement

est possible si deux s´equences i et j ne poss`edent pas de mutations in- compatibles: aucun locus m (m = 1, . . . , L) ne doit satisfaire `a l’une des

conditions suivantes: !

Yim = 1 et Yjm= 0

Yim = 0 et Yjm= 1.

o`u Yimd´enote l’all`ele du marqueur m de l’haplotype i. Si un tel ´ev´enement

est possible, il nous faut calculer la nouvelle s´equence k r´esultante de l’´ev´enement: pour m = 1, . . . , L,

(Y

km= 0, si Yim = 0 ou Yjm= 0,

Ykm= 1, si Yim = 1 ou Yjm= 1,

Ykm=•, si Yim =• et Yjm =•,

L’´etape suivante consiste alors `a v´erifier si cette nouvelle s´equence k existe d´ej`a, ou s’il faut la cr´eer. La probabilit´e de l’´ev´enement d´epend alors de la multiplicit´e de k, δik et δjk.

PossMut(): ´Ev´enement de mutation Mij(m). Une mutation est possible `a chacun

des L marqueurs, si une seule s´equence de multiplicit´e 1 poss`ede une mu- tation `a ce locus (une valeur 1). Dˆu au codage des donn´ees, il suffit de lire la matrice Y en colonne: pour avoir ´ev´enement de mutation, il faut que la somme en colonne de Y, en tenant compte des multiplicit´es, soit exactement 1. Autrement dit, une mutation est possible au marqueur m si et seulement si:

d



i=1

niYim= 1.

Si une mutation est possible, il faut alors chercher dans les diff´erentes s´equences quelle est celle qui poss`ede un site mutant `a ce locus (s´equence i). L’´etape suivante consiste alors `a construire la s´equence j en faisant muter le locus identifi´e de la s´equence i, et `a v´erifier si la nouvelle s´equence j existe d´ej`a, afin de connaˆıtre sa multiplicit´e dont d´epend la probabilit´e de l’´ev´enement.

PossRecom(): ´Ev´enement de recombinaison Rjki (p). Un ´ev´enement de recombinai-

son est possible dans chacun des intervalles (p = 1, . . . , L−1), pour chacune des s´equences i, si l’intervalle en question est ancestral: cette situation se

pr´esente s’il est inclus entre γiet κi, que l’on aura d´ej`a calcul´es. Pour chaque

´ev´enement de recombinaison possible, il faut cr´eer les s´equences parentales j et k, et v´erifier si elles existent afin d’obtenir leur multiplicit´e pour le calcul de la probabilit´e de l’´ev´enement.

Une fois que l’on a ´evalu´e tous les ´ev´enements possibles et que l’on a rassembl´e les informations indispensables aux calculs des probabilit´es (ατ, βτ), on peut cal-

culer ces derni`eres. Un ´ev´enement est alors choisi au hasard, proportionnellement `

a son poids.

Pour passer `a l’´etape suivante du graphe, il ne reste qu’`a ajuster les donn´ees et la valeur de certains param`etres. Si une coalescence de s´equences de type identique se produit (Ci), il faut ajuster la multiplicit´e de la s´equence i: ni− = 1

(notation qui signifie que ni `a l’´etape τ + 1 est ´egal `a ni `a l’´etape τ moins 1), et

enlever la s´equence i de Y si ni devient nul. Ensuite, s’il s’agit d’un ´ev´enement

de coalescence de s´equences diff´erentes (Cijk), on ajoute la s´equence k `a Y si elle n’existe pas encore. Si k existe d´ej`a, on modifie sa multiplicit´e, tel que nk+ = 1.

Dans tous les cas, on diminue la multiplicit´e des s´equences i et j: ni− = 1 et

nj− = 1. Si ni ou nj devient nul, il faut alors enlever la s´equence i ou j de Y. Si

l’´ev´enement choisi est une mutation (Mij(m)), on ajoute la s´equence j `a Y si elle n’existe pas encore. Si la s´equence j existe d´ej`a, on modifie sa multiplicit´e qui devient nj+ = 1. Dans tous les cas, on diminue la multiplicit´e de la s´equence i,

ni− = 1. Si nidevient nul, il faut alors enlever la s´equence i de Y. Si l’´ev´enement

choisi est une recombinaison (Rjki ), il faut cr´eer les deux nouvelles s´equences et v´erifier si elles existaient auparavant. Pour chacune de ces nouvelles s´equences, si elles n’existaient pas, il faut les rajouter `a la matrice Y, sinon il suffit d’ajuster la multiplicit´e de la s´equence. Quel que soit l’´ev´enement choisi, il faudra recalculer, ou mettre `a jour, selon les param`etres, les vecteurs γ, κ, a, b, n (qui contiennent de l’information pour chaque type de s´equence: par exemple, le vecteur γ est de dimension d et contient la valeur de γipour chaque s´equence i) et les param`etres

Une des options concerne le nombre de points pour lesquels la vraisemblance est ´evalu´ee (NbCan). Si x est la valeur de la variable NbCan, le programme r´epartit

les x candidats sur la longueur totale de la s´equence, de telle fa¸con que l’on ait xp points dans l’intervalle p (proportionnellement `a la longueur de l’intervalle),

et que le nombre total de points soit x. Une autre option s’offre ´egalement `a l’usager afin de lui permettre de pr´eciser le nombre de points par intervalle; celle-ci permet, par exemple, de ne pas ´evaluer la vraisemblance dans certains intervalles, tout en utilisant l’ensemble de la s´equence pour construire les graphes. Le temps de calcul grandit l´eg`erement en fonction du nombre de points pour lesquels la vraisemblance est ´evalu´ee. Cependant, plus le nombre de points est ´elev´e, plus la courbe de vraisemblance est pr´ecise. La figure 4.2.2 illustre cette diff´erence. Les deux calculs pour (a) et (b) sont identiques (mˆeme racine al´eatoire) mais le nombre de points pour lesquels la vraisemblance est ´evalu´ee est de 50 dans la premi`ere analyse, et de 200 dans la seconde. Pour cet exemple (A), alors qu’il faut 6 heures pour calculer la vraisemblance avec 1M d’it´erations avec 50 valeurs candidates, il faut 7 heures et 12 minutes avec 200 valeurs candidates pour le mˆeme nombre d’it´erations.

La courbe de vraisemblance est habituellement repr´esent´ee sur toute la lon- gueur de la s´equence, mais elle n’est en fait pas d´efinie entre le dernier point d’un

-124 -122 -120 -118 -116 -114 -112 -110 -108 -106 -104 -102 0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16  (a) -129 -126 -123 -120 -117 -114 -111 -108 -105 -102 0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16  (b)

Figure 4.2.2. Illustration de l’effet du nombre de points pour lesquels la vraisemblance est calcul´ee: (a) NbCan est 50, (b) NbCan est 200.

intervalle et le premier point de l’intervalle suivant, comme l’illustre la figure 4.2.2: aux deux s´eparations entre marqueurs (lignes en pointill´e verticales `a x = 0.05 et x = 0.10), la vraisemblance n’est pas repr´esent´ee.

Documents relatifs