knitr::opts_chunk$set(
    collapse = TRUE,
    comment = "#>"
)
suppressPackageStartupMessages({
    library(tanggle, quietly=TRUE)
    library(phangorn, quietly=TRUE)
    library(ggtree, quietly=TRUE)
})

\center {width=25%} \center

Introducción

Esta es la viñeta en español para el paquete de R tanggle, en ella proveemos una vista general de sus funciones y ejemplos de uso. Tanggle extiende el paquete de R ggtree [@Yu2017], lo cual permite la visualización de múltiples tipos de redes filogenéticas usando la sintaxis de ggplot2 [@Wickham2016]. Especificamente, tanggle contiene funciones que permiten al usuario visualizar: (1) redes divididas o implícitas (no-enraizadas, no-direccionadas) y (2) redes explícitas (enraizadas, direccionadas) con reticulaciones. Estas funciones ofrecen alternativas a las funciones gráficas disponibles en ape [@Paradis2018] y phangorn [@Schliep2011].

Lista de funciones

name | Brief description | :-------- | :--------------------------------------------| geom_splitnet | Adds a splitnet layer to a ggplot, to combine visualising data and the network ggevonet | Grafica una red explícita de un objeto phylo ggsplitnet | Grafica una red implícita de un objeto phylo minimize_overlap | Reduce el número de líneas de reticulación entrecruzadas en la gráfica node_depth_evonet | Devuelve las profundidades o alturas de los nodos y puntas en la red filogenética

Para empezar

Instalar el paquete desde Bioconductor directamente:

Install the package from Bioconductor directly:

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("tanggle")

O instalar la versión de desarrollo del paquete desde: Github.

if (!requireNamespace("remotes", quietly=TRUE))
  install.packages("remotes")
remotes::install_github("KlausVigo/tanggle")

Si necesita installer ggtree desde github:

remotes::install_github("YuLab-SMU/ggtree")

Y cargar todas las librerías:

library(tanggle)
library(phangorn)
library(ggtree)

Redes dividida o implicitas

Las redes divididas son objetos de visualización de datos que permiten la definición de 2 (o más) opciones de división no compatibles. Las redes divididas son usadas frecuentemente para graficar redes consenso [@Holland2004] o redes vecinas [@Bryant2004]. Esto puede llevarse a cabo utilizando las funciones consensusNet o neighbor-net en phangorn [@Schliep2011], o importando archivos Nexus provenientes de SplitsTree [@Huson2006].

Tipos de datos

tanggle acepta tres formatos de entrada para redes divididas. Las siguientes opciones de entrada generan un objeto network para graficar.

fdir <- system.file("extdata/trees", package = "phangorn")
Nnet <- phangorn::read.nexus.networx(file.path(fdir,"woodmouse.nxs"))
  1. Una colección de árboles de genes (e.g., de RAxML [@Stamatakis2014RAxML]) en alguno de los siguientes formatos: Importar archivo Nexus con la función read.nexus Archivo de texto en formato Newick (un árbol de genes por línea) importado con la función read.tree

Estimación de una red dividida consenso mediante la función consensusNet en phangorn [@Schliep2011].

Para graficar una Red Dividida

Podemos graficar una red con las siguientes opciones por defecto:

p <- ggsplitnet(Nnet) + geom_tiplab2()
p

Luego podemos establecer los límites para los ejes x & y permitiendo la lectura de los nombres de los ejes.

p <- p + xlim(-0.019, .003) + ylim(-.01, .012) 
p

Es posible renombrar las puntas. Aquí cambiamos los nombres por un consecutivo de 1 a 15:

Nnet$translate$label <- seq_along(Nnet$tip.label)

Podemos incluir los nombres de las puntas con geom_tiplab2, y con esto personalizar algunas de sus opciones. Por ejemplo, las puntas de color azul, en negrilla e itálicas; también los nodos internos en verde:

ggsplitnet(Nnet) + geom_tiplab2(col = "blue", font = 4, hjust = -0.15) + 
    geom_nodepoint(col = "green", size = 0.25)

Los nodos pueden ser anotados con geom_point.

ggsplitnet(Nnet) + geom_point(aes(shape = isTip, color = isTip), size = 2)

Para graficar una Red Explícita

La función ggevonet dibuja redes explícitas (árboles filogenéticos reticulados). Una adición reciente en ape [@Paradis2018] permite importar árboles en un formato Newick extendido [@Cardona2008].

Importar una red explícita (ejemplo de Fig. 2 en Cardona et al. 2008):

z <- read.evonet(text = "((1,((2,(3,(4)Y#H1)g)e,(((Y#H1,5)h,6)f)X#H2)c)a,
                 ((X#H2,7)d,8)b)r;")

Para graficar una red explícita:

ggevonet(z, layout = "rectangular") + geom_tiplab() + geom_nodelab()
p <- ggevonet(z, layout = "slanted") + geom_tiplab() + geom_nodelab()
p + geom_tiplab(size=3, color="purple")
p + geom_nodepoint(color="#b5e521", alpha=1/4, size=10)

Resumen

Esta viñeta ilustra todas las funciones en el paquete tanggle para R. Aquí se proveen algunos ejemplos de como graficar redes implícitas y explícitas. La visualización de redes divididas toma (se sirve de / utiliza ???) la mayoría de las funciones compatibles con árboles no enraizados en ggtree. Las opciones de diseño para las redes explícitas son rectangular o slanted.

\newpage

\newpage \appendix

Session info {.unnumbered}

sessionInfo()

References

\bibliography{tanggle}



KlausVigo/tanggle documentation built on April 16, 2022, 10:53 p.m.