Importación

Árbol que utilizaremos como ejemplo en el tutorial

El árbol que usaremos proviene del artículo de Gutiérrez-Rodríguez et al., publicado en la revista Invertebrate Systematics (2022). En este trabajo se analizó la diversidad y las relaciones evolutivas del género Stenopelmatus (Orthoptera: Stenopelmatidae: Stenopelmatinae), conocidos en México como “caras de niño” y en Estados Unidos como “Jerusalem crickets”.

El estudio integró datos mitocondriales (cox1) y nucleares (3RAD) para reconstruir la filogenia del grupo, revelando una amplia diversificación y una marcada estructura filogenética en Mesoamérica. Además, los autores listaron las accesiones de cox1 y las lecturas de 3RAD por localidad, garantizando la trazabilidad de los datos utilizados.

Para nuestro tutorial trabajaremos con dos archivos complementarios:

  • Un árbol obtenido con RAxML (ML, formato NEWICK) a partir del gen cox1.

  • Un árbol generado con BEAST (Bayesiano, formato NEXUS/treedata) que incorpora información de datación y barras de HPD, ideal para mostrar cómo integrar y visualizar metadatos temporales.

Estos dos árboles serán nuestros hilos conductores para mostrar, paso a paso, cómo transformar archivos .tre crudos en figuras claras, reproducibles y listas para ser compartidas con el mundo.

Importación de árboles en R

Una vez que tenemos identificados nuestros archivos de ejemplo, el siguiente paso es llevarlos a R. Los árboles filogenéticos suelen distribuirse en distintos formatos, y dependiendo del programa de origen, necesitaremos elegir la función y paquete adecuados para leerlos.

Paquetes principales

  • ape

    • read.tree() → para archivos NEWICK (.tre, .nwk).

    • read.nexus() → para archivos NEXUS (.nex).

    • Devuelve objetos de clase phylo, que representan la estructura básica del árbol (topología, nombres de puntas, longitudes de rama).

  • treeio

    • read.newick() → NEWICK enriquecido.

    • read.nexus() → NEXUS con posibilidad de extraer metadatos.

    • read.beast() → archivos de BEAST con información de datación, HPD y posterior.

    • read.raxml() → árboles de RAxML con soportes de nodos.

    • Devuelve objetos de clase treedata, que son árboles con una tabla de metadatos asociada.

  • Regla práctica:

    • Si tu archivo solo tiene topología y longitudes, ape es suficiente.

    • Si tu archivo proviene de BEAST, RAxML, IQ-TREE, MrBayes o incluye anotaciones, usa treeio para no perder metadatos.

1. Árbol de máxima verosimilitud (RAxML → phylo)

library(ape)

# Archivo ML (NEWICK)
f_raxml <- "../docs/raxml_cox1_Stenopelmatus.tre"

# Lectura con ape
ml_phylo <- read.tree(f_raxml)

# Clase del objeto
class(ml_phylo)
[1] "phylo"
# [1] "phylo"

2. Árbol bayesiano (BEAST → treedata)”

library(treeio)

# Archivo BEAST
f_beast <- "../docs/Beast_Stenopelmatinae_cox1.tre"

# Lectura con treeio
beast_td <- read.beast(f_beast)

# Clase del objeto
class(beast_td)
[1] "treedata"
attr(,"package")
[1] "tidytree"
# [1] "tre