Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parYvain Bouillon Modifié depuis plus de 9 années
1
1 Étudiants: Nicolo.DeCoi@unil.ch Larisa.Espinoza@unil.ch Josip.Mikulic@unil.ch Professeur: Salamin Nicolas Assistante: Maryam Zaheri
2
2 Likelihood (L) estimation for a simple tree of nucleotides sequences Understand the mathematicals processes under this estimation Programming a general fonction in R to calculate L for a specific tree Buts principaux
3
3 Intérêt et pertinence du projet La méthode du ML permet d’optimiser les paramètres pour trouver le meilleur arbre phylogénétique Détecter la pression sélective pour étudier le rôle d’un gène, les gènes importants sont très conservés Utilisation et interprétation des données phylogénétiques Etude et modélisation de l’évolution des espèces à partir des séquences trouvées
4
4 Méthodologie Figure 1: représentation des substitutions multiples à un site (Yang, Computational molecular evolution, Oxford universtiy press, 2006) la distance entre 2 séquences s’estime par le nombre de nucléotides différents à chaque site Problème: sous estimation des substitutions (substitutions multiples, hidden substitutions) Markov chain (fig. 1) Continuous-time Markov process: est un modèle probabilistique qui décrit tous les possibles substitutions qui peuvent se passer à un site on se basant sur la situation actuelle (markov property) et on assumant que chaque site évolue indépendamment la distance entre 2 séquences s’estime par le nombre de nucléotides différents à chaque site Problème: sous estimation des substitutions (substitutions multiples, hidden substitutions) Markov chain (fig. 1) Continuous-time Markov process: est un modèle probabilistique qui décrit tous les possibles substitutions qui peuvent se passer à un site on se basant sur la situation actuelle (markov property) et on assumant que chaque site évolue indépendamment
5
5 Markov chain model JC69: Modèle simple pour nucléotides (T,C,A,G), bon modèle pour des petites distances Q={q ij } est la matrice des taux de substitution: qij est le taux instantané de substitution du nucléotide i au nucléotide j la somme de chaque colonne vaut 0 a la même valeur pour chaque nucléotide (ex =1) qij∆t donne la probabilité de substitution dans un petit intervalle de temps P(t)={p ij (t)} est la matrice des probabilités de transition: pij(t) est la probabilité qu’un nucléotide i devient j après un temps t cette matrice considère et calcule tous les possible voies par lesquelles est passé le processus évolutif même dimensions de la matrice Q, la somme de chaque colonne vaut 1 se calcule ainsi: Markov chain model JC69: Modèle simple pour nucléotides (T,C,A,G), bon modèle pour des petites distances Q={q ij } est la matrice des taux de substitution: qij est le taux instantané de substitution du nucléotide i au nucléotide j la somme de chaque colonne vaut 0 a la même valeur pour chaque nucléotide (ex =1) qij∆t donne la probabilité de substitution dans un petit intervalle de temps P(t)={p ij (t)} est la matrice des probabilités de transition: pij(t) est la probabilité qu’un nucléotide i devient j après un temps t cette matrice considère et calcule tous les possible voies par lesquelles est passé le processus évolutif même dimensions de la matrice Q, la somme de chaque colonne vaut 1 se calcule ainsi:
6
6 Likelihood method: méthode pour calculer la distance entre 2 séquences la topologie de l’arbre est fixé on assume que chaque site évolue indépendamment des autres the nesting rule : on somme les états du nœud ancestrale après avoir fait la somme pour chaque nœud descendant utilise une matrice data de dimension s x n Likelihood method: méthode pour calculer la distance entre 2 séquences la topologie de l’arbre est fixé on assume que chaque site évolue indépendamment des autres the nesting rule : on somme les états du nœud ancestrale après avoir fait la somme pour chaque nœud descendant utilise une matrice data de dimension s x n Pour un nœud: Pour un site de l’arbre: Pour tous les sites de l’arbre:
7
7 Résultats Topologie de l’arbre phylogénétique The Newick tree format est une écriture utilisé pour représenter des arbres Topologie de l’arbre phylogénétique The Newick tree format est une écriture utilisé pour représenter des arbres tr <- read.tree() (((S1:0.2,S2:0.2)node1:0.1,S3:0.2)node3:0.1,(S4:0.2,S5:0.2)node2:0.1)node4:0.1; plot.phylo(tr,root.edge=TRUE,underscore=TRUE,no.margin=TRUE,font=2)nodelabels(c("node4","node3","node1","node2"),frame="c",bg="white")
8
8 site <- function(seq,Q){ dna<-c(-3,1,1,1,1,-3,1,1,1,1,-3,1,1,1,1,-3) Q<-matrix(dna,nrow=4,ncol=4,dimnames=list("bases"=c("T","C","A","G"), "bases"=c("T","C","A","G"))) seq <- read.dna("/Users/Deketek/Scuola/Mathematique/mc.paml", format="sequential",as.character=TRUE) L <- numeric(length=length(seq[1,])) t1 <- 0.2 t2 <- 0.2 t3 <- 0.2 t4 <- 0.2 t5 <- 0.2 t6 <- 0.1 t7 <- 0.1 t8 <- 0.1 p <- c(0.25,0.25,0.25,0.25) x <- matrix(data=NA,nrow=5,ncol=4) for(h in 1:length(seq[1,])){ for(k in 1:length(seq[,1])){ if(seq[k,h]=="t"){ x[k,] <- c(1,0,0,0)} else{if(seq[k,h]=="c"){ x[k,] <- c(0,1,0,0)} else{if(seq[k,h]=="a"){ x[k,] <- c(0,0,1,0)} else{if(seq[k,h]=="g"){ x[k,] <- c(0,0,0,1) }}}}} P1<-expm(Q*t1) l <- length(P1[1,]) c <- length(P1[,1]) sum1 <- c(0,0,0,0) C1 <- matrix(data=0,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C1[i,j] <- P1[i,j]*x[1,j] sum1[i] <- C1[i,j]+sum1[i]}} P2<-expm(Q*t2) l <- length(P2[1,]) c <- length(P2[,1]) sum2 <- c(0,0,0,0) C2 <- matrix(data=0,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C2[i,j] <- P2[i,j]*x[2,j] sum2[i] <- C2[i,j]+sum2[i]}} node1 <- sum1*sum2 P3<-expm(Q*t4) l <- length(P1[1,]) c <- length(P1[,1]) sum3 <- c(0,0,0,0) C3 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C3[i,j] <- P3[i,j]*x[4,j] sum3[i] <- C3[i,j]+sum3[i]}} P4<-expm(Q*t5) l <- length(P2[1,]) c <- length(P2[,1]) um4 <- c(0,0,0,0) C4 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C4[i,j] <- P4[i,j]*x[5,j] sum4[i] <- C4[i,j]+sum4[i]}} node2 <- sum3*sum4 P5<-expm(Q*t7) l <- length(P1[1,]) c <- length(P1[,1]) sum5 <- c(0,0,0,0) C5 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C5[i,j] <- P5[i,j]*node1[j] sum5[i] <- C5[i,j]+sum5[i]}} P6<-expm(Q*t2) l <- length(P2[1,]) c <- length(P2[,1]) sum6 <- c(0,0,0,0) C6 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C6[i,j] <- P6[i,j]*x[3,j] sum6[i] <- C6[i,j]+sum6[i]}} node3 <- sum5*sum6 P7<-expm(Q*t6) l <- length(P1[1,]) c <- length(P1[,1]) sum7 <- c(0,0,0,0) C7 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C7[i,j] <- P7[i,j]*node3[j] sum7[i] <- C7[i,j]+sum7[i]}} P8<-expm(Q*t8) l <- length(P2[1,]) c <- length(P2[,1]) sum8 <- c(0,0,0,0) C8 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C8[i,j] <- P8[i,j]*node2[j] sum8[i] <- C8[i,j]+sum8[i]}} node4 <- sum7*sum8 L[h]<- log(sum(node4*p)) } LT <- sum(L) return(LT) }
9
9 site <- function(seq,Q){ dna<-c(-3,1,1,1,1,-3,1,1,1,1,-3,1,1,1,1,-3) Q<-matrix(dna,nrow=4,ncol=4,dimnames=list("bases"=c("T","C","A","G"), "bases"=c("T","C","A","G"))) seq <- read.dna("/Users/Deketek/Scuola/Mathematique/mc.paml", format="sequential",as.character=TRUE) L <- numeric(length=length(seq[1,])) t1 <- 0.2 t2 <- 0.2 t3 <- 0.2 t4 <- 0.2 t5 <- 0.2 t6 <- 0.1 t7 <- 0.1 t8 <- 0.1 p <- c(0.25,0.25,0.25,0.25) x <- matrix(data=NA,nrow=5,ncol=4) for(h in 1:length(seq[1,])){ for(k in 1:length(seq[,1])){ if(seq[k,h]=="t"){ x[k,] <- c(1,0,0,0)} else{if(seq[k,h]=="c"){ x[k,] <- c(0,1,0,0)} else{if(seq[k,h]=="a"){ x[k,] <- c(0,0,1,0)} else{if(seq[k,h]=="g"){ x[k,] <- c(0,0,0,1) }}}}} P1<-expm(Q*t1) l <- length(P1[1,]) c <- length(P1[,1]) sum1 <- c(0,0,0,0) C1 <- matrix(data=0,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C1[i,j] <- P1[i,j]*x[1,j] sum1[i] <- C1[i,j]+sum1[i]}} P2<-expm(Q*t2) l <- length(P2[1,]) c <- length(P2[,1]) sum2 <- c(0,0,0,0) C2 <- matrix(data=0,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C2[i,j] <- P2[i,j]*x[2,j] sum2[i] <- C2[i,j]+sum2[i]}} node1 <- sum1*sum2 P3<-expm(Q*t4) l <- length(P1[1,]) c <- length(P1[,1]) sum3 <- c(0,0,0,0) C3 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C3[i,j] <- P3[i,j]*x[4,j] sum3[i] <- C3[i,j]+sum3[i]}} P4<-expm(Q*t5) l <- length(P2[1,]) c <- length(P2[,1]) um4 <- c(0,0,0,0) C4 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C4[i,j] <- P4[i,j]*x[5,j] sum4[i] <- C4[i,j]+sum4[i]}} node2 <- sum3*sum4 P5<-expm(Q*t7) l <- length(P1[1,]) c <- length(P1[,1]) sum5 <- c(0,0,0,0) C5 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C5[i,j] <- P5[i,j]*node1[j] sum5[i] <- C5[i,j]+sum5[i]}} P6<-expm(Q*t2) l <- length(P2[1,]) c <- length(P2[,1]) sum6 <- c(0,0,0,0) C6 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C6[i,j] <- P6[i,j]*x[3,j] sum6[i] <- C6[i,j]+sum6[i]}} node3 <- sum5*sum6 P7<-expm(Q*t6) l <- length(P1[1,]) c <- length(P1[,1]) sum7 <- c(0,0,0,0) C7 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C7[i,j] <- P7[i,j]*node3[j] sum7[i] <- C7[i,j]+sum7[i]}} P8<-expm(Q*t8) l <- length(P2[1,]) c <- length(P2[,1]) sum8 <- c(0,0,0,0) C8 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C8[i,j] <- P8[i,j]*node2[j] sum8[i] <- C8[i,j]+sum8[i]}} node4 <- sum7*sum8 L[h]<- log(sum(node4*p)) } LT <- sum(L) return(LT) }
10
10 Résultats Les inputs de notre fonction: > Q bases bases T C A G T -3 1 1 1 C 1 -3 1 1 A 1 1 -3 1 G 1 1 1 -3 La matrice Q > seq[,1:5] [,1] [,2] [,3] [,4] [,5] S1 "t" "g" "t" "a" "g" S2 "t" "t" "g" "g" "c" S3 "g" "t" "g" "t" "t" S4 "t" "g" "t" "a" "g" S5 "a" "g" "g" "c" "a" Les séquences à analyser site <- function(seq,Q){
11
11 site <- function(seq,Q){ dna<-c(-3,1,1,1,1,-3,1,1,1,1,-3,1,1,1,1,-3) Q<matrix(dna,nrow=4,ncol=4,dimnames=list("bases"=c("T","C","A","G"), "bases"=c("T","C","A","G"))) seq <- read.dna("/Users/Deketek/Scuola/Mathematique/mc.paml", format="sequential",as.character=TRUE) L <- numeric(length=length(seq[1,])) t1 <- 0.2 t2 <- 0.2 t3 <- 0.2 t4 <- 0.2 t5 <- 0.2 t6 <- 0.1 t7 <- 0.1 t8 <- 0.1 p <- c(0.25,0.25,0.25,0.25) x <- matrix(data=NA,nrow=5,ncol=4) for(h in 1:length(seq[1,])){ for(k in 1:length(seq[,1])){ if(seq[k,h]=="t"){ x[k,] <- c(1,0,0,0)} else{if(seq[k,h]=="c"){ x[k,] <- c(0,1,0,0)} else{if(seq[k,h]=="a"){ x[k,] <- c(0,0,1,0)} else{if(seq[k,h]=="g"){ x[k,] <- c(0,0,0,1) }}}}} P1<-expm(Q*t1) l <- length(P1[1,]) c <- length(P1[,1]) sum1 <- c(0,0,0,0) C1 <- matrix(data=0,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C1[i,j] <- P1[i,j]*x[1,j] sum1[i] <- C1[i,j]+sum1[i]}} P2<-expm(Q*t2) l <- length(P2[1,]) c <- length(P2[,1]) sum2 <- c(0,0,0,0) C2 <- matrix(data=0,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C2[i,j] <- P2[i,j]*x[2,j] sum2[i] <- C2[i,j]+sum2[i]}} node1 <- sum1*sum2 P3<-expm(Q*t4) l <- length(P1[1,]) c <- length(P1[,1]) sum3 <- c(0,0,0,0) C3 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C3[i,j] <- P3[i,j]*x[4,j] sum3[i] <- C3[i,j]+sum3[i]}} P4<-expm(Q*t5) l <- length(P2[1,]) c <- length(P2[,1]) um4 <- c(0,0,0,0) C4 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C4[i,j] <- P4[i,j]*x[5,j] sum4[i] <- C4[i,j]+sum4[i]}} node2 <- sum3*sum4 P5<-expm(Q*t7) l <- length(P1[1,]) c <- length(P1[,1]) sum5 <- c(0,0,0,0) C5 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C5[i,j] <- P5[i,j]*node1[j] sum5[i] <- C5[i,j]+sum5[i]}} P6<-expm(Q*t2) l <- length(P2[1,]) c <- length(P2[,1]) sum6 <- c(0,0,0,0) C6 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C6[i,j] <- P6[i,j]*x[3,j] sum6[i] <- C6[i,j]+sum6[i]}} node3 <- sum5*sum6 P7<-expm(Q*t6) l <- length(P1[1,]) c <- length(P1[,1]) sum7 <- c(0,0,0,0) C7 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C7[i,j] <- P7[i,j]*node3[j] sum7[i] <- C7[i,j]+sum7[i]}} P8<-expm(Q*t8) l <- length(P2[1,]) c <- length(P2[,1]) sum8 <- c(0,0,0,0) C8 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C8[i,j] <- P8[i,j]*node2[j] sum8[i] <- C8[i,j]+sum8[i]}} node4 <- sum7*sum8 L[h]<- log(sum(node4*p)) } LT <- sum(L) return(LT) }
12
12 Résultats > xsite1 bases seq T C A G S1 1 0 0 0 S2 0 0 1 0 S3 0 0 1 0 S4 0 0 0 1 S5 1 0 0 0 x <- matrix(data=NA,nrow=5,ncol=4) for(h in 1:length(seq[1,])){ for(k in 1:length(seq[,1])){ if(seq[k,h]=="t"){ x[k,] <- c(1,0,0,0) } else{ if(seq[k,h]=="c"){ x[k,] <- c(0,1,0,0) } else{ if(seq[k,h]=="a"){ x[k,] <- c(0,0,1,0) } else{ if(seq[k,h]=="g"){ x[k,] <- c(0,0,0,1) }}}}}
13
13 site <- function(seq,Q){ dna<-c(-3,1,1,1,1,-3,1,1,1,1,-3,1,1,1,1,-3) Q<matrix(dna,nrow=4,ncol=4,dimnames=list("bases"=c("T","C","A","G"), "bases"=c("T","C","A","G"))) seq <- read.dna("/Users/Deketek/Scuola/Mathematique/mc.paml", format="sequential",as.character=TRUE) L <- numeric(length=length(seq[1,])) t1 <- 0.2 t2 <- 0.2 t3 <- 0.2 t4 <- 0.2 t5 <- 0.2 t6 <- 0.1 t7 <- 0.1 t8 <- 0.1 p <- c(0.25,0.25,0.25,0.25) x <- matrix(data=NA,nrow=5,ncol=4) for(h in 1:length(seq[1,])){ for(k in 1:length(seq[,1])){ if(seq[k,h]=="t"){ x[k,] <- c(1,0,0,0)} else{if(seq[k,h]=="c"){ x[k,] <- c(0,1,0,0)} else{if(seq[k,h]=="a"){ x[k,] <- c(0,0,1,0)} else{if(seq[k,h]=="g"){ x[k,] <- c(0,0,0,1) }}}}} P1<-expm(Q*t1) l <- length(P1[1,]) c <- length(P1[,1]) sum1 <- c(0,0,0,0) C1 <- matrix(data=0,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C1[i,j] <- P1[i,j]*x[1,j] sum1[i] <- C1[i,j]+sum1[i]}} P2<-expm(Q*t2) l <- length(P2[1,]) c <- length(P2[,1]) sum2 <- c(0,0,0,0) C2 <- matrix(data=0,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C2[i,j] <- P2[i,j]*x[2,j] sum2[i] <- C2[i,j]+sum2[i]}} node1 <- sum1*sum2 P3<-expm(Q*t4) l <- length(P1[1,]) c <- length(P1[,1]) sum3 <- c(0,0,0,0) C3 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C3[i,j] <- P3[i,j]*x[4,j] sum3[i] <- C3[i,j]+sum3[i]}} P4<-expm(Q*t5) l <- length(P2[1,]) c <- length(P2[,1]) um4 <- c(0,0,0,0) C4 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C4[i,j] <- P4[i,j]*x[5,j] sum4[i] <- C4[i,j]+sum4[i]}} node2 <- sum3*sum4 P5<-expm(Q*t7) l <- length(P1[1,]) c <- length(P1[,1]) sum5 <- c(0,0,0,0) C5 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C5[i,j] <- P5[i,j]*node1[j] sum5[i] <- C5[i,j]+sum5[i]}} P6<-expm(Q*t2) l <- length(P2[1,]) c <- length(P2[,1]) sum6 <- c(0,0,0,0) C6 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C6[i,j] <- P6[i,j]*x[3,j] sum6[i] <- C6[i,j]+sum6[i]}} node3 <- sum5*sum6 P7<-expm(Q*t6) l <- length(P1[1,]) c <- length(P1[,1]) sum7 <- c(0,0,0,0) C7 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C7[i,j] <- P7[i,j]*node3[j] sum7[i] <- C7[i,j]+sum7[i]}} P8<-expm(Q*t8) l <- length(P2[1,]) c <- length(P2[,1]) sum8 <- c(0,0,0,0) C8 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C8[i,j] <- P8[i,j]*node2[j] sum8[i] <- C8[i,j]+sum8[i]}} node4 <- sum7*sum8 L[h]<- log(sum(node4*p)) } LT <- sum(L) return(LT) }
14
14 Résultats P1<-expm(Q*t1) sum1 <- c(0,0,0,0) l <- length(P1[1,]) c <- length(P1[,1]) C1 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C1[i,j] <- P1[i,j]*x[1,j] sum1[i] <- C1[i,j]+sum1[i] }} P2<-expm(Q*t2) sum2 <- c(0,0,0,0) l <- length(P2[1,]) c <- length(P2[,1]) C2 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C2[i,j] <- P2[i,j]*x[2,j] sum2[i] <- C2[i,j]+sum2[i] }} node1 <- sum1*sum2 Exemple pour le premier noeud > P 4 x 4 Matrix of class "dsyMatrix" bases bases T C A G T 0.5869967 0.1376678 0.1376678 0.1376678 C 0.1376678 0.5869967 0.1376678 0.1376678 A 0.1376678 0.1376678 0.5869967 0.1376678 G 0.1376678 0.1376678 0.1376678 0.5869967 Exemple avec t = 0.2 X t1 t2 Node 1 sum1 sum2 X[1,j]X[2,j]
15
15 site <- function(seq,Q){ dna<-c(-3,1,1,1,1,-3,1,1,1,1,-3,1,1,1,1,-3) Q<matrix(dna,nrow=4,ncol=4,dimnames=list("bases"=c("T","C","A","G"), "bases"=c("T","C","A","G"))) seq <- read.dna("/Users/Deketek/Scuola/Mathematique/mc.paml", format="sequential",as.character=TRUE) L <- numeric(length=length(seq[1,])) t1 <- 0.2 t2 <- 0.2 t3 <- 0.2 t4 <- 0.2 t5 <- 0.2 t6 <- 0.1 t7 <- 0.1 t8 <- 0.1 p <- c(0.25,0.25,0.25,0.25) x <- matrix(data=NA,nrow=5,ncol=4) for(h in 1:length(seq[1,])){ for(k in 1:length(seq[,1])){ if(seq[k,h]=="t"){ x[k,] <- c(1,0,0,0)} else{if(seq[k,h]=="c"){ x[k,] <- c(0,1,0,0)} else{if(seq[k,h]=="a"){ x[k,] <- c(0,0,1,0)} else{if(seq[k,h]=="g"){ x[k,] <- c(0,0,0,1) }}}}} P1<-expm(Q*t1) l <- length(P1[1,]) c <- length(P1[,1]) sum1 <- c(0,0,0,0) C1 <- matrix(data=0,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C1[i,j] <- P1[i,j]*x[1,j] sum1[i] <- C1[i,j]+sum1[i]}} P2<-expm(Q*t2) l <- length(P2[1,]) c <- length(P2[,1]) sum2 <- c(0,0,0,0) C2 <- matrix(data=0,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C2[i,j] <- P2[i,j]*x[2,j] sum2[i] <- C2[i,j]+sum2[i]}} node1 <- sum1*sum2 P3<-expm(Q*t4) l <- length(P1[1,]) c <- length(P1[,1]) sum3 <- c(0,0,0,0) C3 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C3[i,j] <- P3[i,j]*x[4,j] sum3[i] <- C3[i,j]+sum3[i]}} P4<-expm(Q*t5) l <- length(P2[1,]) c <- length(P2[,1]) um4 <- c(0,0,0,0) C4 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C4[i,j] <- P4[i,j]*x[5,j] sum4[i] <- C4[i,j]+sum4[i]}} node2 <- sum3*sum4 P5<-expm(Q*t7) l <- length(P1[1,]) c <- length(P1[,1]) sum5 <- c(0,0,0,0) C5 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C5[i,j] <- P5[i,j]*node1[j] sum5[i] <- C5[i,j]+sum5[i]}} P6<-expm(Q*t2) l <- length(P2[1,]) c <- length(P2[,1]) sum6 <- c(0,0,0,0) C6 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C6[i,j] <- P6[i,j]*x[3,j] sum6[i] <- C6[i,j]+sum6[i]}} node3 <- sum5*sum6 P7<-expm(Q*t6) l <- length(P1[1,]) c <- length(P1[,1]) sum7 <- c(0,0,0,0) C7 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C7[i,j] <- P7[i,j]*node3[j] sum7[i] <- C7[i,j]+sum7[i]}} P8<-expm(Q*t8) l <- length(P2[1,]) c <- length(P2[,1]) sum8 <- c(0,0,0,0) C8 <- matrix(data=NA,nrow=l,ncol=c) for(i in 1:l){ for(j in 1:c){ C8[i,j] <- P8[i,j]*node2[j] sum8[i] <- C8[i,j]+sum8[i]}} node4 <- sum7*sum8 L[h]<- log(sum(node4*p)) } LT <- sum(L) return(LT) }
16
16 L <- numeric(length=length(seq[1,])) Résultats for(h in 1:length(seq[1,])){ L[h]<- log(sum(node4*p)) } LT <- sum(L) return(LT) } Vecteur vide à remplir avec le likelihood pour chaque site Loop pour calculer le likelihood de chaque site Définir la valeur qui entre dans le vecteur L et l’output de la fonction
17
17 Perspectives Optimisation des paramètres de l’arbre Passage du modèle JC69 à des modèles pour nucléotides plus complexes Passage au Codon-based model: La chaîne de Markov décrit les substitutions d’un codon i en j Ne considère pas les délétions/insertions Les mutations se passent indépendamment au 3 sites des codons Les paramètres de Q: {q ij } = 0 si i et j diffèrent à 2 ou 3 positions du codon j si i et j diffèrent d’une transversion synonyme j si i et j diffèrent d’une transition synonyme j si i et j diffèrent d’une transversion non-synonyme j si i et j diffèrent d’une transition non-synonyme Estimation du taux de substitutions nonsynonyme/ synonyme (ω= dn/ds) est un important indicateur de la pression sélective: ω = 1 -> neutral mutations ω purifyng selection ω > 1 -> diversifyng positive selection
18
18 Bibliographie Yang Z., Computational Molecular Evolution, Oxford university press, 2006 Masatoshi N./Sudhir K., Molecular Evolution and Phylogenetics, Oxford university press, 2000 Paradis E., Analysis of Phylogenetics and Evolution with R, Springer, 2006 Livres: Articles: Goldman N./Yang Z., "A Codon-based Model of Nucleotide Substitution for Protein- coding DNA Sequences", The University of Chicago, 1994 Yang & all, "Codon-Substitution Models for Heterogeneous Selection Pressure at Amino Acid Sites", Genetics nb 155, p. 431-449, 2000
19
19 Merci pour l’attention!! Questions?
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.