Laboratorio II: Filogenia. Instrucciones

Para empezar a trabajar vamos a crear un Proyecto nuevo en RStudio llamado Laboratorio en el directorio (carpeta) que queramos. Los archivos que descargues, guárdalos en esa carpeta para tener todo en el mismo sitio. Luego crea un Script de R para ir trabajando allí. Al finalizar crea un archivo R markdown con tus resultados y es lo que enviaras como tarea.

Librerías

Vamos a usar las librerias ape: Analyses of Phylogenetics and Evolution, phangorn: Phylogenetic Reconstruction and Analysis y phytools: Phylogenetic Tools for Comparative Biology (and Other Things). Las debiste instalar como último paso en el Laboratorio I.

Carga las librerías:

library(ape)
library(phangorn)
library(phytools)
## Loading required package: maps

Matriz de distancias

Vamos a utilizar las secuencias de aminoácidos de varias proteínas homólogas a la frataxina humana, proteína implicada en la enfermedad de ataxia de Friedreich. Vamos a usar las mismas secuencias con las que trabajamos en el Seminario de Alineamiento de secuencias, pero guardadas en formato FASTA.

Crear matriz de distancias

Para empezar convertimos el archivo en un formato compatible con la librería phangorn, indicando el formato: “FASTA” y el tipo de secuencias: “AA” (aminoácidos)

Asegúrate de que el archivo con las secuencias alineadas está en la carpeta donde está el Proyecto de RStudio. Y en file = “” coloca el nombre CORRECTO del archivo de las secuencias Ejemplo: “fraxatin_aligned.fasta”

fraxatin <- read.phyDat(file = "fraxatin_aligned.fasta", 
                        format = "FASTA", type = "AA")
fraxatin
## 11 sequences with 310 character and 180 different site patterns.
## The states are A R N D C Q E G H I L K M F P S T W Y V

Hay 11 secuencias con 310 caracteres y 180 columnas en las que hay diferentes posiciones. Los estados son los aminoácidos A (alanina), R (arginina), etc. Ahora lo que se hace es crear una matriz de distancia para poder crear árboles de distancia o parsimonia a través de ella. En este caso la clase debe ser AAbin (Amino Acid Sequences), por eso transformamos el objeto fraxatin en este tipo de clase. La función dist.aa (método o función de objeto o clase) calcula una matriz de distancias por pares de las secuencias de aminoácidos partir de una objecto de clase AAbin utilizando un modelo de evolución de aminoácidos (por ejemplo Dayhoff).

matrizdist <- as.AAbin(fraxatin)
matrizdist <- dist.aa(matrizdist)
matrizdist
##            Ornitorrinco Caballo Raton Rata Zarigueyas Rhesus Macaco Hombre
## Caballo             171                                                   
## Raton               169      85                                           
## Rata                171      88    17                                     
## Zarigueyas          174     100    93   90                                
## Rhesus              165      88    62   60         88                     
## Macaco              166      89    63   61         89      2              
## Hombre              161      84    61   59         85     16     18       
## Chimpance           166      90    66   63         93     20     22      9
## Perro               168      88    59   61         98     58     58     52
## Vaca                174      97    76   74         98     63     64     62
##            Chimpance Perro
## Caballo                   
## Raton                     
## Rata                      
## Zarigueyas                
## Rhesus                    
## Macaco                    
## Hombre                    
## Chimpance                 
## Perro             57      
## Vaca              65    58

Árboles de distancias

Estos árboles son árboles de similaridad, no representan inferencia evolutiva.

Método UPGMA

Con la matriz de distancia perdemos los caracteres a favor de las diferencias en caracteres entre especies. Cuando aparece un valor de 0, significa que no hay diferencia al nivel de los caracteres (aminoácidos) entre las sequencias de dos especies. Ahora creamos un árbol con el método de grupo de pares no ponderados con media aritmética (UPGMA) usando la matriz de distancia que acabamos de calcular.

arbolUPGMA <- upgma(matrizdist)
plot(arbolUPGMA)

Si la longitud de dos ramas es indéntica, significa que las secuancias también son indénticas y en la matriz de distancia la diferencia es de 0.

Método NJ

Ahora hacemos un árbol con el método de unión de vecinos (NJ) usando la misma matriz de distancias:

arbolNJ <- nj(matrizdist)
plot(arbolNJ)

Este último árbol puede ser distinto del árbol creado con el método UPGMA. Para personalizar los árboles podemos agregar argumentos a parámetros como cex, para el tamaño de la letra, edge.color, para el grosos de las ramas, etc. También se puede escoger entre diferentes visualizaciones de árbol como filograma, cladograma, radial y demás.

plot(arbolUPGMA, type= "p", cex=0.8, edge.width=2, edge.color="red", font=3)

plot(arbolUPGMA, type= "c", cex=0.8, edge.width=2, edge.color="blue", font=3)

plot(arbolUPGMA, type= "p", label.offset=0.0005, edge.lty=1, node.pos=2, cex=0.8, edge.width=2, edge.color="black", font=3)

Personalización del árbol con phytools

Además de plot podemos graficar árboles con el método plotTree del paquete phytools, el cual es compatible con ape y con phangorn.

plotTree(arbolNJ)

A este también le podemos hacer modificaciones.

plotTree(arbolNJ, ftype="b", fsize=0.8, offset=1, color="red", lwd=2)

En los árboles, sin cambiar la topología, se puede cambiar el orden en que los grupos son visualizados. Por ejemplo, se pueden ordenar las puntas de manera alfabética (en la medida de lo posible), o con los grupos más derivados hacia uno de los lados del árbol. Para escalerizar hacia la derecha:

plotTree(ladderize(arbolNJ))

Para guardar un árbol podemos usar el comando write.tree(tree, file = "file_name.nex"). Este archivo puede ser leído usando read.tree(file = file_name.nex).

Enraizar

Hasta ahora los árboles que hemos construido no están enraízados. Para enraizarlos podemos usar la función root del paquete ape. Por ejemplo, para poner por raíz las secuencias de fraxatina de Ornitorinco pasamos por argumento el nombre de la secuencia que corresponde a esta secuencia en el parámetro outgroup (Ornitorrinco).

arbolNJraiz <-root(arbolNJ, outgroup = "Ornitorrinco", r = TRUE)
plot(arbolNJraiz)

Se puede hacer lo mismo con el árbol creado a partir del método UPGMA.

arbolUPGMAraiz <-root(arbolUPGMA, outgroup = "Ornitorrinco", r=TRUE)
plot(arbolUPGMAraiz)

Además podemos visualizar los dos árboles a la vez con los siguientes comandos:

layout(matrix(c(1,2)), height=c(10,10))
par(mar=c(1,1,1,1))
plot(arbolUPGMAraiz, label.offset=0.0005, main="ARBOL UPGMA", cex=0.4)
plot(arbolNJraiz, label.offset=0.0005, main="ARBOL NJ", cex=0.4)

Árboles de parsimonia

La parsimonia busca disminuir el número de pasos que explican un árbol evolutivo contando el número de cambios de cada uno de los caracteres. En los métodos de distancia (UPGMA y NJ) sólo se llega a un único árbol, mientras que en parsimonia se evalúan múltiples árboles. Se suman todos los pasos reqerridos para explicar un árbol obteniendo y se obtiene un número que se compara entre otros árboles con diferentes pasos. El árbol con menor número de cambios es el ideal.

Hay que tener en cuenta que la parsimonia no usa todos los caracteres (aminoácidos de la secuecia). Son eliminados aquellos que son constantes en todos los taxones, o aquellos que son variables pero no informativos. Un caracter es informativo si tiene al menos dos estados de caracter y por lo menos dos de estos estados ocurren con una frecuencia mínima de dos.

Para estimar árboles de máxima parsimonia existen varias posbilidades, la más sencilla es partir de árboles de distancia. Se utiliza un árbol de inicio obtenido por distancia y se cuenta su número de pasos. Podemos estimar, por ejemplo, el número de pasos del árbol arbolUPGMAraiz.

parsimony(arbolUPGMAraiz, fraxatin)
## [1] 313

El árbol arbolUPGMAraiz tiene 313 pasos, algo importante es que aunque esté con raíz o no el número de pasos debe ser el mismo. Probémoslo usando el árbol sin raíz:

parsimony(arbolUPGMA, fraxatin)
## [1] 313

Con el método optim.parsimony se obtiene el árbol con mejor parsimonia. Este método permite encontrar árboles bajo máxima parsimonia usando árboles de distancia de inicio.

mejorUPGMA <- optim.parsimony(arbolUPGMAraiz, fraxatin)
## Final p-score 307 after  2 nni operations

Ahora hagámoslo con el árbol de NJ:

mejorNJ <- optim.parsimony(arbolNJraiz, fraxatin)
## Final p-score 307 after  1 nni operations

Hacer parsimonia con un número de taxones muy alto se convierte en una labor computacional ardua. Más allá de 10 taxones hay un número de combinaciones difíciles de obtener computacionalmente y se deben hacer búsquedas heurísticas, esto significa que no se evalúan todas las posibilidades de árboles.

Los métodos heurísticos buscan algunos árboles seleccionando un árbol inicial y cortando ramas y poniéndolas en otro lugar del árbol (branch swapping). Se puede interpretar como una muestra representativa de una problación para hacer inferencias a partir de ella. Hay varias formas de búsquedas heurísticas como:

Intercambio de vecino más cercano (Nearest Neighbor Interchange, NNI): Consiste en intercambir ramas adyacentes hacia una rama interna.

Podado de subárbol y reinjerto (Subtree pruning and regrafting, SPR): Se corta un pedazo de rama y se inserta en otra rama de manera azarosa.

Bisección de árbol y reconexión (Tree bisection and reconnection, TBR): Se corta el árbol en la mitad y una porción del árbol que queda de coloca en alguna parte que queda de las ramas del otro árbol.

Los anteriores métodos heurísticos son lentos computacionalente, por lo que en algunos casos es recomendable poner una restricción de búsqueda, por ejemplo un límite de árboles con los que trabajar.

Otra estrategia para hacer el proceso de búsqueda de árbol con mayor parsimonia es con el algoritmo de búsqueda pratchet. El cual tiene los siguientes pasos:

Generar un árbol de inicio con algún nivel de intercambio de ramas Seleccionar al azar un subconjunto de caracteres (aminoácidos) y darles más peso, esto quiere decir que se usan con mayor frecuencia dichos caracteres para hacer los análisis. La cantidad de caracteres que se seleccionan es establecida por el usuario, típicamente entre 5 y 25% de los caracteres. Realizar intercambio de ramas (branch swapping). Iterar pasos 1 a 3 entre 50 y 200 veces. El algoritmo anterior es computacionalmente más amigable y rápido. Probémoslo usando la función pratchet:

fraxatin_parsimonia <- pratchet(fraxatin, all = TRUE)
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"

Se genera un árbol, se pesan caracteres por defecto y se itera un número determiando de veces. El algoritmo ha encontrado múltiples ocasiones que el árbol más corto es de 307 pasos pero sólo 4 árboles con igual longitud y número de pasos aunque presenten diferente topología.

fraxatin_parsimonia
## 4 phylogenetic trees

Para poderlos comparar es necesario enraizarlos.

fraxatin_parsimoniaR <- root(phy = fraxatin_parsimonia, outgroup = "Ornitorrinco")
plot(fraxatin_parsimoniaR, cex = 0.6)

Para escoger el sólo un árbol con igual parsimonia hay que conseguir un árbol de consenso. Una posibilidad es un árbol de consenso estricto, sólo los grupos monofiléticos presentes en todos los árboles son incluidos; si un grupo monofilétco no está presente en todos los árboles colapsa formando una politomía en el árbol consenso. Este tipo de consenso es muy riguroso y suele tener muchas politomías, de modo que se puede hacer un consenso con una regla de mayoría. Por ejemplo, si un grupo está presente en una mayoría del 51% de árboles, entonces el árbol consenso lo incluye, si sólo está presente en el 50%, el consenso no lo usa.

Para hacer un árbol de consenso estricto podemos usar el método ape con parámetro p de 1, que corresponde a un 100% de consenso entre ramas.

estrictode100 <- consensus(fraxatin_parsimoniaR, p = 1)
plot(estrictode100, cex = .6)

Para un árbol menos estricto podemos cambiar el valor del parámetro p:

estrictode30 <- consensus(fraxatin_parsimoniaR, p = 0.3)
plot(estrictode30, cex = .6)

El resultado es un árbol con menos politomías, más resuelto.

Bootstrap

Para dar soporte a los árboles se puede hacer una serie de seudoréplicas con remplazamiento (bootstrapping) de una matriz. Los cambios entre seudoréplicas consisten en el uso diferencial de los caracteres. Se crean árboles en los que un mismo caracter se repite u otro no se usa.

Con cada réplica se hace un árbol consenso; la veces que un grupo se repita en el conjunto de réplica es el valor de soporte del nodo. Esta técnica, ampliamente utilizada, proporciona evaluaciones de «confianza» para cada clado de un árbol observado, basándose en la proporción de árboles bootstrap que muestran ese mismo clado. Normalmente un nodo con un soporte mayor a 80% es un buen soporte.

arbolesbootstrap <- bootstrap.phyDat(fraxatin, FUN = pratchet, bs = 10)
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 307"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 248"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 319"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 323"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 317"
## [1] "Best pscore so far: 317"
## [1] "Best pscore so far: 317"
## [1] "Best pscore so far: 317"
## [1] "Best pscore so far: 317"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 314"
## [1] "Best pscore so far: 303"
## [1] "Best pscore so far: 303"
## [1] "Best pscore so far: 303"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 302"
## [1] "Best pscore so far: 292"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 290"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 369"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"
## [1] "Best pscore so far: 296"

En este caso usamos la función pratchet, si usáramos otra se demoraría más. También usamos un número de réplicas irrisosio pues este es un ejercicio demostrativo y no es necesario gastar mucho tiempo en él. La rutina anterior genera entonces 10 árboles pseudoréplicas.

plot(arbolesbootstrap, cex = .6)

Ahora bien, generamos un consenso; en este caso con un consenso al 60%:

estricto60 <- consensus(arbolesbootstrap, p = 0.6)
plot(estricto60, cex = .6)

Modelos probabilísticos

Métodos de reconstrucción filogenética basados en modelos probabilísticos. Los caracteres en este caso no son sólo caracteres si no que también representan dinámicas evolutivas. A diferencia de la parsimonia, con estos modelos todos los caracteres son útiles, incluso los que son constantes entre todos los taxones. Además estos cumplen con un modelo evolutivo.

Árboles de máxima verosimilitud

Se calcula la verosimilitud (probabilidad de obtener un dato según un modelo) de un árbol de acuerdo a un alineamiento de secuencias usando un modelo de sustitución de aminoácidos. También se tienen en cuenta la frecuencia de de ocurrencia de los aminoácidos. Los pasos para determinar la verosimilitud de un árbol son:

  • Se genera un árbol enraizado de inicio de cualquier tipo, puede ser al azar.
  • Se calcula la verosimilitud de casa sitio (de aminoácidos) usando un árbol.
  • Se calcula la verosimilitud total del árbol por nodo, se consideran todos los escenario posibles que pudieron dar origen a los estados de caracter observados para dicho sitio. La verosimilitud de un sitio es, entonces, la suma de verosimilitudes de la reconstrución de este sitio (en forma de árbol) dado un modelo de evolución o sustitución.

La verosimilitud es computacionalmente costosa. Para el ejemplo usamos de nuevo nuestro objeto fraxatin de clase phy y creamos un árbol al azar de 11 ramas (porque tenemos 11 secuencias) con rtree como punto de partida.

arbolazar <- rtree(n = 11, tip.label = names(fraxatin))
plot(arbolazar, cex = .5)

En seguida lo enraizamos por las secuencias de Ornitorinco para poderlo visualizar mejor. Además los «escalerizamos» hacia la derecha y le agregamos escala; aquí la longitud de la rama sí es significativa, indica cantidad de cambio en cuanto a sustituciones de aminoácidos.

arbolazarR <- root(phy = arbolazar, outgroup = "Ornitorrinco")
plot(ladderize(arbolazarR), cex = .5); add.scale.bar()

A partir del arbol de arriba se puede iniciar la búsqueda del mejor árbol por máxima verosimilitud. Lo primero que se hace es carcular la verosimilitud del árbol dadas las secuencias. Con pml (Phylogenetic maximum likelihood), podemos computar tal verosimilitud.

ajustado <- pml(arbolazarR, fraxatin)
ajustado
## model: Mk 
## loglikelihood: -4367.895 
## unconstrained loglikelihood: -1479.871 
## Rate matrix:

La información que tiene el objeto ajustado nos reporta la verosimilitud del árbol al azar que habíamos creado, que es -4348.064. También reporta un modelo de substitución general, el cual tal vez no se ajuste bien a los datos. Lo que hay que hacer es encontrar un árbol que optimice la verosimilitud usando un modelo de sustitución; para esto vamos a usar el método optim.pml del paquete phangorn, el cual computa la verosimilitud de un árbol filogenético dado un alineamiento múltiple de secuencias y un modelo de evolución de AA. Toma como argumentos un objeto de clase pml, el tipo de modelo que se quiere usar así como el tiempo de rearreglo para los árboles.

ajustadoconDay <- optim.pml(object = ajustado, model = "Dayhoff", rearrangement = "ratchet")
## optimize edge weights:  -4041.496 --> -2947.432 
## optimize edge weights:  -2947.432 --> -2947.432 
## optimize topology:  -2947.432 --> -2662.245  NNI moves:  9 
## optimize edge weights:  -2662.245 --> -2662.245 
## optimize topology:  -2662.245 --> -2575.443  NNI moves:  6 
## optimize edge weights:  -2575.443 --> -2575.443 
## optimize topology:  -2575.443 --> -2575.443  NNI moves:  0 
## optimize topology:  -2600.867 --> -2590.887  NNI moves:  3 
## [1] "Ratchet iteration  1 , best pscore so far: -2575.44286290502"
## optimize topology:  -2627.677 --> -2577.024  NNI moves:  6 
## [1] "Ratchet iteration  2 , best pscore so far: -2575.44286290502"
## optimize topology:  -2612.819 --> -2586.069  NNI moves:  3 
## [1] "Ratchet iteration  3 , best pscore so far: -2575.44286290502"
## optimize topology:  -2614.541 --> -2577.879  NNI moves:  5 
## [1] "Ratchet iteration  4 , best pscore so far: -2575.44286290502"
## optimize topology:  -2584.435 --> -2576.27  NNI moves:  3 
## [1] "Ratchet iteration  5 , best pscore so far: -2575.44286290502"
## optimize topology:  -2591.797 --> -2583.512  NNI moves:  4 
## [1] "Ratchet iteration  6 , best pscore so far: -2575.44286290502"
## optimize topology:  -2644.179 --> -2608.398  NNI moves:  5 
## [1] "Ratchet iteration  7 , best pscore so far: -2575.44286290502"
## optimize topology:  -2577.496 --> -2577.496  NNI moves:  1 
## [1] "Ratchet iteration  8 , best pscore so far: -2575.44286290502"
## optimize topology:  -2607.847 --> -2585.094  NNI moves:  3 
## [1] "Ratchet iteration  9 , best pscore so far: -2575.44286290502"
## optimize topology:  -2654.177 --> -2583.088  NNI moves:  7 
## [1] "Ratchet iteration  10 , best pscore so far: -2575.44286290502"
## optimize topology:  -2621.209 --> -2579.685  NNI moves:  8 
## [1] "Ratchet iteration  11 , best pscore so far: -2575.44286290502"
## optimize topology:  -2626.645 --> -2582.568  NNI moves:  6 
## [1] "Ratchet iteration  12 , best pscore so far: -2575.44286290502"
## optimize topology:  -2605.802 --> -2581.044  NNI moves:  3 
## [1] "Ratchet iteration  13 , best pscore so far: -2575.44286290502"
## optimize topology:  -2592.146 --> -2589.107  NNI moves:  1 
## [1] "Ratchet iteration  14 , best pscore so far: -2575.44286290502"
## optimize topology:  -2640.476 --> -2581.507  NNI moves:  4 
## [1] "Ratchet iteration  15 , best pscore so far: -2575.44286290502"
## optimize topology:  -2643.778 --> -2578.342  NNI moves:  6 
## [1] "Ratchet iteration  16 , best pscore so far: -2575.44286290502"
## optimize topology:  -2583.734 --> -2575.583  NNI moves:  3 
## [1] "Ratchet iteration  17 , best pscore so far: -2575.44286290502"
## optimize topology:  -2653.147 --> -2577.294  NNI moves:  6 
## [1] "Ratchet iteration  18 , best pscore so far: -2575.44286290502"
## optimize topology:  -2584.651 --> -2584.651  NNI moves:  0 
## [1] "Ratchet iteration  19 , best pscore so far: -2575.44286290502"
## optimize topology:  -2612.051 --> -2575.572  NNI moves:  3 
## [1] "Ratchet iteration  20 , best pscore so far: -2575.44286290502"
## optimize topology:  -2609.986 --> -2583.466  NNI moves:  2 
## [1] "Ratchet iteration  21 , best pscore so far: -2575.44286290502"
## optimize topology:  -2591.128 --> -2575.443  NNI moves:  3 
## [1] "Ratchet iteration  22 , best pscore so far: -2575.44286290502"
## optimize topology:  -2587.264 --> -2576.076  NNI moves:  5 
## [1] "Ratchet iteration  23 , best pscore so far: -2575.44286290502"
## optimize topology:  -2585.084 --> -2580.581  NNI moves:  3 
## [1] "Ratchet iteration  24 , best pscore so far: -2575.44286290502"
## optimize topology:  -2630.215 --> -2602.056  NNI moves:  5 
## [1] "Ratchet iteration  25 , best pscore so far: -2575.44286290502"
## optimize topology:  -2613.187 --> -2582.042  NNI moves:  6 
## [1] "Ratchet iteration  26 , best pscore so far: -2575.44286290502"
## optimize topology:  -2621.029 --> -2575.443  NNI moves:  3 
## [1] "Ratchet iteration  27 , best pscore so far: -2575.44286290502"
## optimize topology:  -2584.348 --> -2580.447  NNI moves:  3 
## [1] "Ratchet iteration  28 , best pscore so far: -2575.44286290502"
## optimize topology:  -2632.138 --> -2575.52  NNI moves:  4 
## [1] "Ratchet iteration  29 , best pscore so far: -2575.44286290502"
## optimize topology:  -2607.141 --> -2575.553  NNI moves:  3 
## [1] "Ratchet iteration  30 , best pscore so far: -2575.44286290502"
## optimize topology:  -2644.649 --> -2613.224  NNI moves:  3 
## [1] "Ratchet iteration  31 , best pscore so far: -2575.44286290502"
## optimize topology:  -2604.392 --> -2583.041  NNI moves:  2 
## [1] "Ratchet iteration  32 , best pscore so far: -2575.44286290502"
## optimize topology:  -2583.266 --> -2578.323  NNI moves:  2 
## [1] "Ratchet iteration  33 , best pscore so far: -2575.44286290502"
## optimize topology:  -2644.393 --> -2576.27  NNI moves:  3 
## [1] "Ratchet iteration  34 , best pscore so far: -2575.44286290502"
## optimize topology:  -2594.554 --> -2575.593  NNI moves:  4 
## [1] "Ratchet iteration  35 , best pscore so far: -2575.44286290502"
## optimize topology:  -2691.481 --> -2584.504  NNI moves:  6 
## [1] "Ratchet iteration  36 , best pscore so far: -2575.44286290502"
## optimize topology:  -2587.089 --> -2575.45  NNI moves:  5 
## [1] "Ratchet iteration  37 , best pscore so far: -2575.44286290502"
## optimize topology:  -2578.928 --> -2575.443  NNI moves:  3 
## [1] "Ratchet iteration  38 , best pscore so far: -2575.44286290502"
## optimize topology:  -2601.093 --> -2575.464  NNI moves:  3 
## [1] "Ratchet iteration  39 , best pscore so far: -2575.44286290502"
## optimize topology:  -2629.667 --> -2575.445  NNI moves:  7 
## [1] "Ratchet iteration  40 , best pscore so far: -2575.44286290502"
## optimize topology:  -2617.897 --> -2582.474  NNI moves:  3 
## [1] "Ratchet iteration  41 , best pscore so far: -2575.44286290502"
## optimize topology:  -2581.638 --> -2575.443  NNI moves:  3 
## [1] "Ratchet iteration  42 , best pscore so far: -2575.44286290502"
## optimize topology:  -2626.438 --> -2575.443  NNI moves:  3 
## [1] "Ratchet iteration  43 , best pscore so far: -2575.44286290502"
## optimize topology:  -2605.284 --> -2575.57  NNI moves:  4 
## [1] "Ratchet iteration  44 , best pscore so far: -2575.44286290502"
## optimize topology:  -2602.97 --> -2575.701  NNI moves:  5 
## [1] "Ratchet iteration  45 , best pscore so far: -2575.44286290502"
## optimize topology:  -2587.606 --> -2582.165  NNI moves:  1 
## [1] "Ratchet iteration  46 , best pscore so far: -2575.44286290502"
## optimize topology:  -2613.018 --> -2603.003  NNI moves:  2 
## [1] "Ratchet iteration  47 , best pscore so far: -2575.44286290502"
## optimize topology:  -2658.661 --> -2612.844  NNI moves:  4 
## [1] "Ratchet iteration  48 , best pscore so far: -2575.44286290502"
## optimize topology:  -2641.425 --> -2590.813  NNI moves:  5 
## [1] "Ratchet iteration  49 , best pscore so far: -2575.44286290502"
## optimize topology:  -2638.842 --> -2607.194  NNI moves:  3 
## [1] "Ratchet iteration  50 , best pscore so far: -2575.44286290502"

Para ver el árbol oculto usamos $tree. También lo enraizamos.

ajustadoconDay$tree
## 
## Phylogenetic tree with 11 tips and 9 internal nodes.
## 
## Tip labels:
##   Rata, Ornitorrinco, Rhesus, Raton, Zarigueyas, Vaca, ...
## Node labels:
##   1, 0.429, 0.492, 0.528, 1, 1, ...
## 
## Unrooted; includes branch lengths.
ajustadoconDayraíz <- root(ajustadoconDay$tree, outgroup = "Ornitorrinco")
plot(ladderize(ajustadoconDayraíz), cex = .5); add.scale.bar()

El árbol anterior fue generado usando la matriz de sustitución de Dayhoff. Pero se pueden usar diferentes modelos.

ajustadoconBlo <- optim.pml(object = ajustado, model = "Blosum62", rearrangement = "ratchet")
## optimize edge weights:  -4103.93 --> -2953.704 
## optimize edge weights:  -2953.704 --> -2953.704 
## optimize topology:  -2953.704 --> -2666.709  NNI moves:  8 
## optimize edge weights:  -2666.709 --> -2666.709 
## optimize topology:  -2666.709 --> -2581.762  NNI moves:  6 
## optimize edge weights:  -2581.762 --> -2581.762 
## optimize topology:  -2581.762 --> -2579.699  NNI moves:  1 
## optimize edge weights:  -2579.699 --> -2579.699 
## optimize topology:  -2579.699 --> -2579.699  NNI moves:  0 
## optimize topology:  -2586.936 --> -2579.699  NNI moves:  1 
## [1] "Ratchet iteration  1 , best pscore so far: -2579.69854862068"
## optimize topology:  -2594.195 --> -2579.699  NNI moves:  4 
## [1] "Ratchet iteration  2 , best pscore so far: -2579.69854862068"
## optimize topology:  -2608.84 --> -2579.699  NNI moves:  4 
## [1] "Ratchet iteration  3 , best pscore so far: -2579.69854862068"
## optimize topology:  -2585.49 --> -2579.699  NNI moves:  2 
## [1] "Ratchet iteration  4 , best pscore so far: -2579.69854862068"
## optimize topology:  -2579.632 --> -2579.632  NNI moves:  0 
## [1] "Ratchet iteration  5 , best pscore so far: -2579.63196010376"
## optimize topology:  -2585.49 --> -2579.699  NNI moves:  2 
## [1] "Ratchet iteration  6 , best pscore so far: -2579.63196010376"
## optimize topology:  -2585.49 --> -2579.699  NNI moves:  2 
## [1] "Ratchet iteration  7 , best pscore so far: -2579.63196010376"
## optimize topology:  -2595.141 --> -2579.632  NNI moves:  3 
## [1] "Ratchet iteration  8 , best pscore so far: -2579.63196010376"
## optimize topology:  -2593.172 --> -2579.699  NNI moves:  4 
## [1] "Ratchet iteration  9 , best pscore so far: -2579.63196010376"
## optimize topology:  -2579.699 --> -2579.699  NNI moves:  0 
## [1] "Ratchet iteration  10 , best pscore so far: -2579.63196010376"
## optimize topology:  -2579.699 --> -2579.699  NNI moves:  1 
## [1] "Ratchet iteration  11 , best pscore so far: -2579.63196010376"
## optimize topology:  -2579.699 --> -2579.699  NNI moves:  0 
## [1] "Ratchet iteration  12 , best pscore so far: -2579.63196010376"
## optimize topology:  -2587.25 --> -2579.632  NNI moves:  1 
## [1] "Ratchet iteration  13 , best pscore so far: -2579.63196010376"
## optimize topology:  -2589.316 --> -2579.632  NNI moves:  3 
## [1] "Ratchet iteration  14 , best pscore so far: -2579.63196010376"
## optimize topology:  -2579.632 --> -2579.632  NNI moves:  0 
## [1] "Ratchet iteration  15 , best pscore so far: -2579.63196010376"
## optimize topology:  -2579.632 --> -2579.632  NNI moves:  0 
## [1] "Ratchet iteration  16 , best pscore so far: -2579.63196010376"
## optimize topology:  -2591.698 --> -2579.699  NNI moves:  3 
## [1] "Ratchet iteration  17 , best pscore so far: -2579.63196010376"
## optimize topology:  -2606.635 --> -2579.699  NNI moves:  4 
## [1] "Ratchet iteration  18 , best pscore so far: -2579.63196010376"
## optimize topology:  -2593.306 --> -2579.632  NNI moves:  3 
## [1] "Ratchet iteration  19 , best pscore so far: -2579.63196010376"
## optimize topology:  -2579.632 --> -2579.632  NNI moves:  0 
## [1] "Ratchet iteration  20 , best pscore so far: -2579.63196010376"
## optimize topology:  -2586.464 --> -2579.632  NNI moves:  1 
## [1] "Ratchet iteration  21 , best pscore so far: -2579.63196010376"
## optimize topology:  -2583.628 --> -2579.632  NNI moves:  1 
## [1] "Ratchet iteration  22 , best pscore so far: -2579.63196010376"
## optimize topology:  -2595.141 --> -2579.632  NNI moves:  3 
## [1] "Ratchet iteration  23 , best pscore so far: -2579.63196010376"
## optimize topology:  -2593.306 --> -2579.632  NNI moves:  3 
## [1] "Ratchet iteration  24 , best pscore so far: -2579.63196010376"
## optimize topology:  -2579.699 --> -2579.699  NNI moves:  1 
## [1] "Ratchet iteration  25 , best pscore so far: -2579.63196010376"
## optimize topology:  -2608.84 --> -2579.699  NNI moves:  4 
## [1] "Ratchet iteration  26 , best pscore so far: -2579.63196010376"
## optimize topology:  -2585.49 --> -2579.699  NNI moves:  2 
## [1] "Ratchet iteration  27 , best pscore so far: -2579.63196010376"
## optimize topology:  -2585.49 --> -2579.699  NNI moves:  2 
## [1] "Ratchet iteration  28 , best pscore so far: -2579.63196010376"
## optimize topology:  -2581.762 --> -2579.699  NNI moves:  1 
## [1] "Ratchet iteration  29 , best pscore so far: -2579.63196010376"
## optimize topology:  -2583.012 --> -2579.632  NNI moves:  1 
## [1] "Ratchet iteration  30 , best pscore so far: -2579.63196010376"
## optimize topology:  -2579.632 --> -2579.632  NNI moves:  0 
## [1] "Ratchet iteration  31 , best pscore so far: -2579.63196010376"
## optimize topology:  -2593.306 --> -2579.632  NNI moves:  3 
## [1] "Ratchet iteration  32 , best pscore so far: -2579.63196010376"
## optimize topology:  -2585.49 --> -2579.699  NNI moves:  2 
## [1] "Ratchet iteration  33 , best pscore so far: -2579.63196010376"
## optimize topology:  -2579.632 --> -2579.632  NNI moves:  0 
## [1] "Ratchet iteration  34 , best pscore so far: -2579.63196010376"
## optimize topology:  -2587.421 --> -2587.421  NNI moves:  0 
## [1] "Ratchet iteration  35 , best pscore so far: -2579.63196010376"
## optimize topology:  -2587.421 --> -2587.421  NNI moves:  0 
## [1] "Ratchet iteration  36 , best pscore so far: -2579.63196010376"
## optimize topology:  -2583.652 --> -2579.699  NNI moves:  1 
## [1] "Ratchet iteration  37 , best pscore so far: -2579.63196010376"
## optimize topology:  -2581.762 --> -2579.699  NNI moves:  1 
## [1] "Ratchet iteration  38 , best pscore so far: -2579.63196010376"
## optimize topology:  -2591.698 --> -2579.699  NNI moves:  3 
## [1] "Ratchet iteration  39 , best pscore so far: -2579.63196010376"
## optimize topology:  -2608.84 --> -2579.699  NNI moves:  4 
## [1] "Ratchet iteration  40 , best pscore so far: -2579.63196010376"
## optimize topology:  -2583.628 --> -2579.632  NNI moves:  1 
## [1] "Ratchet iteration  41 , best pscore so far: -2579.63196010376"
## optimize topology:  -2579.632 --> -2579.632  NNI moves:  0 
## [1] "Ratchet iteration  42 , best pscore so far: -2579.63196010376"
## optimize topology:  -2585.49 --> -2579.699  NNI moves:  2 
## [1] "Ratchet iteration  43 , best pscore so far: -2579.63196010376"
## optimize topology:  -2584.867 --> -2579.699  NNI moves:  2 
## [1] "Ratchet iteration  44 , best pscore so far: -2579.63196010376"
## optimize topology:  -2587.421 --> -2587.421  NNI moves:  0 
## [1] "Ratchet iteration  45 , best pscore so far: -2579.63196010376"
## optimize topology:  -2579.632 --> -2579.632  NNI moves:  0 
## [1] "Ratchet iteration  46 , best pscore so far: -2579.63196010376"
## optimize topology:  -2594.486 --> -2579.699  NNI moves:  3 
## [1] "Ratchet iteration  47 , best pscore so far: -2579.63196010376"
## optimize topology:  -2579.699 --> -2579.699  NNI moves:  1 
## [1] "Ratchet iteration  48 , best pscore so far: -2579.63196010376"
## optimize topology:  -2598.801 --> -2579.632  NNI moves:  3 
## [1] "Ratchet iteration  49 , best pscore so far: -2579.63196010376"
## optimize topology:  -2583.628 --> -2579.632  NNI moves:  1 
## [1] "Ratchet iteration  50 , best pscore so far: -2579.63196010376"
## optimize edge weights:  -2579.632 --> -2579.632 
## optimize topology:  -2579.632 --> -2579.632  NNI moves:  0
ajustadoconJTT <- optim.pml(object = ajustado, model = "JTT", rearrangement = "ratchet")
## optimize edge weights:  -3975.936 --> -2864.476 
## optimize edge weights:  -2864.476 --> -2864.476 
## optimize topology:  -2864.476 --> -2591.661  NNI moves:  9 
## optimize edge weights:  -2591.661 --> -2591.66 
## optimize topology:  -2591.66 --> -2526.78  NNI moves:  6 
## optimize edge weights:  -2526.78 --> -2526.78 
## optimize topology:  -2526.78 --> -2511.694  NNI moves:  1 
## optimize edge weights:  -2511.694 --> -2511.694 
## optimize topology:  -2511.694 --> -2511.694  NNI moves:  0 
## optimize topology:  -2515.487 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  1 , best pscore so far: -2511.69381351471"
## optimize topology:  -2521.544 --> -2517.092  NNI moves:  1 
## [1] "Ratchet iteration  2 , best pscore so far: -2511.69381351471"
## optimize topology:  -2518.649 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  3 , best pscore so far: -2511.69381351471"
## optimize topology:  -2515.487 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  4 , best pscore so far: -2511.69381351471"
## optimize topology:  -2517.092 --> -2517.092  NNI moves:  0 
## [1] "Ratchet iteration  5 , best pscore so far: -2511.69381351471"
## optimize topology:  -2523.439 --> -2511.694  NNI moves:  4 
## [1] "Ratchet iteration  6 , best pscore so far: -2511.69381351471"
## optimize topology:  -2517.769 --> -2511.694  NNI moves:  3 
## [1] "Ratchet iteration  7 , best pscore so far: -2511.69381351471"
## optimize topology:  -2525.643 --> -2511.694  NNI moves:  2 
## [1] "Ratchet iteration  8 , best pscore so far: -2511.69381351471"
## optimize topology:  -2511.981 --> -2511.981  NNI moves:  0 
## [1] "Ratchet iteration  9 , best pscore so far: -2511.69381351471"
## optimize topology:  -2512.778 --> -2511.694  NNI moves:  1 
## [1] "Ratchet iteration  10 , best pscore so far: -2511.69381351471"
## optimize topology:  -2540.613 --> -2517.269  NNI moves:  2 
## [1] "Ratchet iteration  11 , best pscore so far: -2511.69381351471"
## optimize topology:  -2521.814 --> -2511.981  NNI moves:  2 
## [1] "Ratchet iteration  12 , best pscore so far: -2511.69381351471"
## optimize topology:  -2517.269 --> -2517.269  NNI moves:  0 
## [1] "Ratchet iteration  13 , best pscore so far: -2511.69381351471"
## optimize topology:  -2526.831 --> -2511.694  NNI moves:  1 
## [1] "Ratchet iteration  14 , best pscore so far: -2511.69381351471"
## optimize topology:  -2522.244 --> -2511.981  NNI moves:  2 
## [1] "Ratchet iteration  15 , best pscore so far: -2511.69381351471"
## optimize topology:  -2517.769 --> -2511.694  NNI moves:  3 
## [1] "Ratchet iteration  16 , best pscore so far: -2511.69381351471"
## optimize topology:  -2536.969 --> -2511.981  NNI moves:  2 
## [1] "Ratchet iteration  17 , best pscore so far: -2511.69381351471"
## optimize topology:  -2521.547 --> -2511.981  NNI moves:  2 
## [1] "Ratchet iteration  18 , best pscore so far: -2511.69381351471"
## optimize topology:  -2517.092 --> -2517.092  NNI moves:  0 
## [1] "Ratchet iteration  19 , best pscore so far: -2511.69381351471"
## optimize topology:  -2524.096 --> -2517.092  NNI moves:  1 
## [1] "Ratchet iteration  20 , best pscore so far: -2511.69381351471"
## optimize topology:  -2522.244 --> -2511.981  NNI moves:  2 
## [1] "Ratchet iteration  21 , best pscore so far: -2511.69381351471"
## optimize topology:  -2511.981 --> -2511.981  NNI moves:  0 
## [1] "Ratchet iteration  22 , best pscore so far: -2511.69381351471"
## optimize topology:  -2523.395 --> -2511.981  NNI moves:  3 
## [1] "Ratchet iteration  23 , best pscore so far: -2511.69381351471"
## optimize topology:  -2515.043 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  24 , best pscore so far: -2511.69381351471"
## optimize topology:  -2515.487 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  25 , best pscore so far: -2511.69381351471"
## optimize topology:  -2543.519 --> -2511.694  NNI moves:  5 
## [1] "Ratchet iteration  26 , best pscore so far: -2511.69381351471"
## optimize topology:  -2517.092 --> -2517.092  NNI moves:  0 
## [1] "Ratchet iteration  27 , best pscore so far: -2511.69381351471"
## optimize topology:  -2523.492 --> -2511.981  NNI moves:  2 
## [1] "Ratchet iteration  28 , best pscore so far: -2511.69381351471"
## optimize topology:  -2511.981 --> -2511.981  NNI moves:  0 
## [1] "Ratchet iteration  29 , best pscore so far: -2511.69381351471"
## optimize topology:  -2517.269 --> -2517.269  NNI moves:  0 
## [1] "Ratchet iteration  30 , best pscore so far: -2511.69381351471"
## optimize topology:  -2512.778 --> -2511.694  NNI moves:  1 
## [1] "Ratchet iteration  31 , best pscore so far: -2511.69381351471"
## optimize topology:  -2511.981 --> -2511.981  NNI moves:  0 
## [1] "Ratchet iteration  32 , best pscore so far: -2511.69381351471"
## optimize topology:  -2520.093 --> -2511.981  NNI moves:  2 
## [1] "Ratchet iteration  33 , best pscore so far: -2511.69381351471"
## optimize topology:  -2517.092 --> -2517.092  NNI moves:  0 
## [1] "Ratchet iteration  34 , best pscore so far: -2511.69381351471"
## optimize topology:  -2525.643 --> -2511.694  NNI moves:  2 
## [1] "Ratchet iteration  35 , best pscore so far: -2511.69381351471"
## optimize topology:  -2511.981 --> -2511.981  NNI moves:  0 
## [1] "Ratchet iteration  36 , best pscore so far: -2511.69381351471"
## optimize topology:  -2512.778 --> -2511.694  NNI moves:  1 
## [1] "Ratchet iteration  37 , best pscore so far: -2511.69381351471"
## optimize topology:  -2523.272 --> -2511.694  NNI moves:  4 
## [1] "Ratchet iteration  38 , best pscore so far: -2511.69381351471"
## optimize topology:  -2517.769 --> -2511.694  NNI moves:  3 
## [1] "Ratchet iteration  39 , best pscore so far: -2511.69381351471"
## optimize topology:  -2511.694 --> -2511.694  NNI moves:  0 
## [1] "Ratchet iteration  40 , best pscore so far: -2511.69381351471"
## optimize topology:  -2518.818 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  41 , best pscore so far: -2511.69381351471"
## optimize topology:  -2515.487 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  42 , best pscore so far: -2511.69381351471"
## optimize topology:  -2523.439 --> -2511.694  NNI moves:  4 
## [1] "Ratchet iteration  43 , best pscore so far: -2511.69381351471"
## optimize topology:  -2521.547 --> -2511.981  NNI moves:  2 
## [1] "Ratchet iteration  44 , best pscore so far: -2511.69381351471"
## optimize topology:  -2511.981 --> -2511.981  NNI moves:  0 
## [1] "Ratchet iteration  45 , best pscore so far: -2511.69381351471"
## optimize topology:  -2515.043 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  46 , best pscore so far: -2511.69381351471"
## optimize topology:  -2517.269 --> -2517.269  NNI moves:  0 
## [1] "Ratchet iteration  47 , best pscore so far: -2511.69381351471"
## optimize topology:  -2511.694 --> -2511.694  NNI moves:  0 
## [1] "Ratchet iteration  48 , best pscore so far: -2511.69381351471"
## optimize topology:  -2523.439 --> -2511.694  NNI moves:  4 
## [1] "Ratchet iteration  49 , best pscore so far: -2511.69381351471"
## optimize topology:  -2515.487 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  50 , best pscore so far: -2511.69381351471"

Podemos comparar los modelos calculando el Criterio de información de Akaike AIC:

AIC(ajustadoconDay, ajustadoconBlo, ajustadoconJTT)
##                df      AIC
## ajustadoconDay 19 5188.886
## ajustadoconBlo 19 5197.264
## ajustadoconJTT 19 5061.388

La primera columna corresponde a los grados libertad. Según el criterio anterior, el mejor modelo que se ajusta con los datos (con el AIC más bajo) es JTT modelo de Jones-Taylor-Thornton para evaluar la distancia entre secuencias de proteínas y optimiza la verosimilitud.

mejorarbol <- optim.pml(
  object = ajustadoconDay, 
  model = "JTT", 
  rearrangement = "ratchet")
## optimize edge weights:  -2511.895 --> -2511.694 
## optimize edge weights:  -2511.694 --> -2511.694 
## optimize topology:  -2511.694 --> -2511.694  NNI moves:  0 
## optimize topology:  -2511.981 --> -2511.981  NNI moves:  0 
## [1] "Ratchet iteration  1 , best pscore so far: -2511.6938135179"
## optimize topology:  -2539.27 --> -2517.269  NNI moves:  2 
## [1] "Ratchet iteration  2 , best pscore so far: -2511.6938135179"
## optimize topology:  -2517.769 --> -2511.694  NNI moves:  3 
## [1] "Ratchet iteration  3 , best pscore so far: -2511.6938135179"
## optimize topology:  -2524.096 --> -2517.092  NNI moves:  1 
## [1] "Ratchet iteration  4 , best pscore so far: -2511.6938135179"
## optimize topology:  -2527.857 --> -2511.694  NNI moves:  3 
## [1] "Ratchet iteration  5 , best pscore so far: -2511.6938135179"
## optimize topology:  -2514.122 --> -2511.694  NNI moves:  2 
## [1] "Ratchet iteration  6 , best pscore so far: -2511.6938135179"
## optimize topology:  -2523.439 --> -2511.694  NNI moves:  4 
## [1] "Ratchet iteration  7 , best pscore so far: -2511.6938135179"
## optimize topology:  -2542.463 --> -2517.092  NNI moves:  2 
## [1] "Ratchet iteration  8 , best pscore so far: -2511.6938135179"
## optimize topology:  -2515.043 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  9 , best pscore so far: -2511.6938135179"
## optimize topology:  -2512.778 --> -2511.694  NNI moves:  1 
## [1] "Ratchet iteration  10 , best pscore so far: -2511.6938135179"
## optimize topology:  -2514.122 --> -2511.694  NNI moves:  2 
## [1] "Ratchet iteration  11 , best pscore so far: -2511.6938135179"
## optimize topology:  -2517.092 --> -2517.092  NNI moves:  0 
## [1] "Ratchet iteration  12 , best pscore so far: -2511.6938135179"
## optimize topology:  -2515.043 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  13 , best pscore so far: -2511.6938135179"
## optimize topology:  -2515.043 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  14 , best pscore so far: -2511.6938135179"
## optimize topology:  -2514.122 --> -2511.694  NNI moves:  3 
## [1] "Ratchet iteration  15 , best pscore so far: -2511.6938135179"
## optimize topology:  -2511.981 --> -2511.981  NNI moves:  0 
## [1] "Ratchet iteration  16 , best pscore so far: -2511.6938135179"
## optimize topology:  -2511.694 --> -2511.694  NNI moves:  0 
## [1] "Ratchet iteration  17 , best pscore so far: -2511.6938135179"
## optimize topology:  -2512.778 --> -2511.694  NNI moves:  2 
## [1] "Ratchet iteration  18 , best pscore so far: -2511.6938135179"
## optimize topology:  -2540.647 --> -2511.694  NNI moves:  5 
## [1] "Ratchet iteration  19 , best pscore so far: -2511.6938135179"
## optimize topology:  -2517.769 --> -2511.694  NNI moves:  3 
## [1] "Ratchet iteration  20 , best pscore so far: -2511.6938135179"
## optimize topology:  -2543.556 --> -2511.694  NNI moves:  6 
## [1] "Ratchet iteration  21 , best pscore so far: -2511.6938135179"
## optimize topology:  -2515.043 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  22 , best pscore so far: -2511.6938135179"
## optimize topology:  -2542.428 --> -2511.981  NNI moves:  5 
## [1] "Ratchet iteration  23 , best pscore so far: -2511.6938135179"
## optimize topology:  -2523.439 --> -2511.694  NNI moves:  4 
## [1] "Ratchet iteration  24 , best pscore so far: -2511.6938135179"
## optimize topology:  -2517.769 --> -2511.694  NNI moves:  3 
## [1] "Ratchet iteration  25 , best pscore so far: -2511.6938135179"
## optimize topology:  -2521.547 --> -2511.981  NNI moves:  2 
## [1] "Ratchet iteration  26 , best pscore so far: -2511.6938135179"
## optimize topology:  -2511.981 --> -2511.981  NNI moves:  0 
## [1] "Ratchet iteration  27 , best pscore so far: -2511.6938135179"
## optimize topology:  -2517.769 --> -2511.694  NNI moves:  3 
## [1] "Ratchet iteration  28 , best pscore so far: -2511.6938135179"
## optimize topology:  -2540.647 --> -2511.694  NNI moves:  5 
## [1] "Ratchet iteration  29 , best pscore so far: -2511.6938135179"
## optimize topology:  -2536.318 --> -2511.981  NNI moves:  2 
## [1] "Ratchet iteration  30 , best pscore so far: -2511.6938135179"
## optimize topology:  -2511.981 --> -2511.981  NNI moves:  0 
## [1] "Ratchet iteration  31 , best pscore so far: -2511.6938135179"
## optimize topology:  -2517.092 --> -2517.092  NNI moves:  0 
## [1] "Ratchet iteration  32 , best pscore so far: -2511.6938135179"
## optimize topology:  -2511.981 --> -2511.981  NNI moves:  0 
## [1] "Ratchet iteration  33 , best pscore so far: -2511.6938135179"
## optimize topology:  -2517.092 --> -2517.092  NNI moves:  0 
## [1] "Ratchet iteration  34 , best pscore so far: -2511.6938135179"
## optimize topology:  -2515.043 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  35 , best pscore so far: -2511.6938135179"
## optimize topology:  -2522.683 --> -2511.694  NNI moves:  2 
## [1] "Ratchet iteration  36 , best pscore so far: -2511.6938135179"
## optimize topology:  -2515.043 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  37 , best pscore so far: -2511.6938135179"
## optimize topology:  -2515.043 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  38 , best pscore so far: -2511.6938135179"
## optimize topology:  -2515.109 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  39 , best pscore so far: -2511.6938135179"
## optimize topology:  -2521.544 --> -2517.092  NNI moves:  1 
## [1] "Ratchet iteration  40 , best pscore so far: -2511.6938135179"
## optimize topology:  -2515.043 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  41 , best pscore so far: -2511.6938135179"
## optimize topology:  -2511.981 --> -2511.981  NNI moves:  0 
## [1] "Ratchet iteration  42 , best pscore so far: -2511.6938135179"
## optimize topology:  -2511.981 --> -2511.981  NNI moves:  0 
## [1] "Ratchet iteration  43 , best pscore so far: -2511.6938135179"
## optimize topology:  -2511.694 --> -2511.694  NNI moves:  0 
## [1] "Ratchet iteration  44 , best pscore so far: -2511.6938135179"
## optimize topology:  -2522.683 --> -2511.694  NNI moves:  2 
## [1] "Ratchet iteration  45 , best pscore so far: -2511.6938135179"
## optimize topology:  -2518.818 --> -2511.981  NNI moves:  1 
## [1] "Ratchet iteration  46 , best pscore so far: -2511.6938135179"
## optimize topology:  -2517.769 --> -2511.694  NNI moves:  3 
## [1] "Ratchet iteration  47 , best pscore so far: -2511.6938135179"
## optimize topology:  -2514.122 --> -2511.694  NNI moves:  2 
## [1] "Ratchet iteration  48 , best pscore so far: -2511.6938135179"
## optimize topology:  -2521.544 --> -2517.092  NNI moves:  1 
## [1] "Ratchet iteration  49 , best pscore so far: -2511.6938135179"
## optimize topology:  -2517.769 --> -2511.694  NNI moves:  3 
## [1] "Ratchet iteration  50 , best pscore so far: -2511.6938135179"
## optimize edge weights:  -2511.694 --> -2511.694 
## optimize topology:  -2511.694 --> -2511.694  NNI moves:  0
mejorarbol
## model: JTT 
## loglikelihood: -2511.694 
## unconstrained loglikelihood: -1479.871 
## Rate matrix: JTT
mejorarbolR <- root(mejorarbol$tree, outgroup = "Ornitorrinco")
plot(ladderize(mejorarbolR), cex = 0.5); add.scale.bar()

Este sería nuestro mejor mejor árbol bajo el modelo de máxima verosimilitud.