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.
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.
library(ape)
library(phangorn)
library(phytools)
## Loading required package: maps
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.
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
Estos árboles son árboles de similaridad, no representan inferencia evolutiva.
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.
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)
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).
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)
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.
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)
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.
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:
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.