jueves, 31 de enero de 2013

"áRboles de compRomiso pondeRado": un método paRa ResumiR difeRentes hipótesis filogenéticas en R.

El 9 de Octubre de 2012, la revista Cladistics, publico en la web a manera de "Early view" un artículo, acerca de un nuevo método de consenso, para resumir distintas hipótesis/árboles/topologias resultantes de un análisis filogenético.
El titulo en ingles del articulo es Weighted compromise trees: a method to summarize competing phylogenetic hypotheses,  y sus autores son Michael J. Sharkey, Stephanie Stoelb, Daniel R. Miranda-Esquivel  y Barabara J. Sharanowski.

Nota_1:Realmente no estoy muy seguro de la "traducción" del nombre del método que puse en el titulo de este post, pero fue el que me pareció que se acercaba más.

Básicamente, como lo dicen en el resumen, el método corrige un "sesgo" inherente al método de consenso de la mayoría, cuando los árboles iniciales son dependientes (no muestran independencia) debido a la ambigüedad en sus clados terminales.

Nota_2: como es característica en R para Chibchombianos, el fin ultimo del blog es la implementación de análisis en R, más no la explicación de los métodos que utilizamos, en orden de promover el uso de R. Si alguien quiere instruirse más acerca de este nuevo método de consenso, puede consultar directamente  el artículo, que es de tan solo 5 paginas y es muy fácil de entender. 

Acompañado con el artículo, D.R. Miranda, escribió una función para la implementación del nuevo método, utilizando el paquete "ape" en R, el código puede ser descargado desde Google code/Wconsensus, y para utilizarlo solo tenemos que descargar el archivo "wconsensus.R", que es la extensión que contiene el código de la función. (en la lista de descargas, también esta disponible un archivo comprimido, que contiene algunos archivos de ejemplo y explicación para utilizar la función)

Para explicar como utilizar la función se debe construir un archivo con extensión .tre , que contenga los árboles iniciales para realizar el consenso, en nuestro ejemplo utilizaremos 5 árboles iniciales, teniendo como terminales a las tortugas ninjas y su maestro :P (que hago? crecí con las tortugas ninjas!! y los Motorratones)

el archivo debe lucir así, y debe ser guardado como "tortugas.tre":





>setwd("~/Escritorio")
#Escojo el directorio en el que esta mi archivo (tortugas.tre) con los árboles iniciales y el archivo de la función (wconsensus.R).

> source("wconsensus.R")
#Cargo la función a mi área de trabajo.

> tortugas <-read.tree("tortugas.tre")
#Leo el archivo de árboles iniciales.


> plot(tortugas)
#Grafíco (opcional/si quiero ver los árboles!) los árboles iniciales.



> consenso_tortugas <- wconsensus(tortugas, collapse= TRUE, cutvalue =0.65) #Realizo el consenso, con un valor de corte de 0.65 para colapsar nodos.
> summary(consenso_tortugas)
#Reviso el valor y número de nodos y las estadísticos del consenso.

Phylogenetic tree: consenso_tortugas 

  Number of tips: 5 
  Number of nodes: 4 
  Branch lengths:
    mean: 0.8888889 
    variance: 0.02469136 
    distribution summary:
   Min. 1st Qu.  Median 3rd Qu.    Max. 
 0.6667  0.7500  1.0000  1.0000  1.0000 
  No root edge.
  Tip labels: Leonardo 
              Miguel_angel
              Rafael
              Donatelo
              Splinter
  Node labels: 1 
               0.6667
               0.7778
               0.6667


> plot(consenso_tortugas)
#Grafíco el árbol consenso
Árbol consenso con un nivel de corte de 0.7 (cutvalue=0.7)
Árbol consenso con un nivel de corte de 0.8 (cutvalue=0.8)
En el próximo post, para ir entrando a lenguaje de programación de manera "suuuaaave", exploraremos un poco, la manera en la que fue escrita esta función de consenso y su código. Hasta entonces!! Buena eneRgía!! Y como dirían los chicos que tengo como portada del blog (Martin de Francisco y Santiago Maure): "Que se los coma el vejete del Jaime Barón"


2 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Hola, Manuel!
    Gracias por comentar y por el interés en el blog y en el post.
    Tienes razón, pero no es que estés haciendo nada mal. Lo que pasa es que me comí nada más y nada menos que el llamado de la función en ese comando que me dices. Ya corregí el post y de todos modos te escribo esa línea como debe ir.

    consenso_tortugas <- wconsensus(tortugas, collapse= TRUE, cutvalue =0.65)

    De nuevo gracias, porque no me había dado cuenta del error, saludos.

    ResponderEliminar