Árbol filogenético

Acerca de los árboles filogenéticos

Un árbol filogenético (también llamado filograma o cladograma) muestra la historia evolutiva inferida de un grupo de especies, genes o secuencias. Los nodos internos representan hipotéticos ancestros comunes; las puntas representan taxones observados; las longitudes de las ramas codifican la distancia evolutiva o el tiempo de divergencia. Los biólogos evolutivos, los ecólogos moleculares y los microbiólogos clínicos usan árboles filogenéticos para reconstruir la historia de la vida, rastrear brotes de patógenos y entender cómo evolucionaron las familias de genes.

Schematex acepta árboles en formato Newick — el estándar de intercambio universal utilizado por PAUP*, IQ-TREE, RAxML, BEAST y prácticamente todos los programas de filogenética — extendido con anotaciones NHX para valores de bootstrap y metadatos de clados. También se admite un DSL basado en sangría para árboles escritos a mano. Esta página documenta lo que el analizador acepta actualmente.

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Vertebrate Evolution Phylogenetic tree with 12 taxa, phylogram mode, circular layout Vertebrate Evolution Primates Rodents Carnivora Cetacea Human Chimp Gorilla Mouse Rat Dog Cat Tiger Whale Dolphin Salmon Zebrafish 0.2 substitutions/site
UTF-8 · LF · 7 lines · 657 chars✓ parsed·4.7 ms·9.5 KB SVG

1. Tu primer árbol filogenético

El árbol más pequeño y útil: cuatro taxones, dos clados.

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Vertebrates Phylogenetic tree with 4 taxa, phylogram mode, rectangular layout Vertebrates Human Chimp Dog Cat 0.1
UTF-8 · LF · 2 lines · 84 chars✓ parsed·0.5 ms·4.3 KB SVG

Tres reglas cubren el 80% de los casos de uso:

  1. Comienza con phylo, opcionalmente seguido de un título entre comillas y props entre corchetes.
  2. Proporciona la topología del árbol en formato newick: — la cadena Newick estándar, entre comillas, en una línea. El ; final es opcional.
  3. Opcionalmente define grupos de resaltado de clade y una etiqueta scale debajo de la línea newick.

Los comentarios deben comenzar con # en su propia línea. Los comentarios en línea al final de línea no están disponibles.


2. Formatos de entrada

2.1 Formato Newick

Newick es la entrada principal. La gramática completa es:

(A,B,(C,D));                         # topology only
(A:0.1,B:0.2,(C:0.3,D:0.4):0.5);    # with branch lengths
((A:0.1,B:0.2):0.05[&&NHX:B=98],(C,D):0.08);  # NHX bootstrap
('Homo sapiens':0.1,'Mus musculus':0.2);        # quoted names with spaces

Las longitudes de rama siguen al nombre del nodo después de dos puntos. Los valores de soporte de nodos internos pueden aparecer como corchetes simples [95] o como NHX [&&NHX:B=95].

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Newick examples Phylogenetic tree with 4 taxa, phylogram mode, rectangular layout Newick examples A B C D 98 87 0.1
UTF-8 · LF · 2 lines · 98 chars✓ parsed·0.7 ms·4.6 KB SVG

Reglas Newick aceptadas por el analizador:

CaracterísticaSintaxisNotas
Nombre de hojaA, Homo_sapiensSin espacios — usa _ o comillas
Nombre de hoja entre comillas'Homo sapiens'Comillas simples; '' es una comilla literal dentro
Longitud de rama:0.035 después del nombreFloat; opcional
Nombre de nodo interno(A,B)ancestorDespués del ) de cierre
Bootstrap (simple)(A,B)[95]Entero o float entre corchetes
Bootstrap (NHX)(A,B)[&&NHX:B=95]Campo B=; otros campos NHX se almacenan pero no se renderizan
Punto y coma; al finalOpcional — el analizador lo elimina
Politomía(A,B,C)Más de 2 hijos

2.2 DSL de sangría

Para árboles escritos a mano o pequeños, Schematex ofrece una alternativa basada en sangría que es más fácil de leer y editar que Newick en bruto:

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Vertebrates (indent DSL) Phylogenetic tree with 1 taxa, phylogram mode, rectangular layout Vertebrates (indent DSL) root 0.2 substitutions/site
UTF-8 · LF · 9 lines · 145 chars✓ parsed·0.8 ms·3.1 KB SVG

Reglas del DSL de sangría:

SintaxisSignificado
Name: lengthNodo hoja con longitud de rama
: lengthNodo interno sin nombre con longitud de rama
NameNodo hoja sin longitud de rama (cladograma)
Name [N]Nodo con valor de soporte N
Sangría más profundaHijo del nodo anterior con sangría más superficial
Línea #Comentario, ignorado

La primera línea que termina con : y no tiene espacios activa el modo árbol-de-sangría (ej. root:). El nombre antes de los dos puntos se convierte en la etiqueta de la raíz; todas las líneas con sangría debajo se convierten en sus hijos.


3. Diseño

Establece el diseño en los corchetes del encabezado: phylo "Title" [layout: rectangular].

DiseñoValorDescripción
RectangularrectangularPredeterminado. Ramas en forma de L; raíz a la izquierda, puntas a la derecha
InclinadoslantedLíneas diagonales de padre a hijo; más compacto
CircularcircularRaíz en el centro, puntas alrededor de la circunferencia
Sin raízunrootedRadial de ángulo igual; enfatiza la distancia, no la ascendencia

[unrooted] como bandera simple es equivalente a [layout: unrooted].

Circular — raíz en el centro, puntas extendiéndose hacia afuera. Más visualmente impactante para árboles con muchos taxones y resaltados de clados.

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Vertebrates — circular Phylogenetic tree with 8 taxa, phylogram mode, circular layout Vertebrates — circular Primates Carnivora Human Chimp Gorilla Dog Cat Wolf Salmon Zebrafish 0.2
UTF-8 · LF · 4 lines · 356 chars✓ parsed·0.7 ms·6.5 KB SVG

Rectangular — ramas en forma de L; raíz a la izquierda, puntas a la derecha. La forma clásica de filograma para figuras publicadas.

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Bacterial Diversity Phylogenetic tree with 10 taxa, phylogram mode, rectangular layout Bacterial Diversity Ecoli Salmonella Vibrio Bacillus Staph Listeria Myco_tb Myco_leprae Strepto Lactobacillus 98 92 100 0.2 substitutions/site
UTF-8 · LF · 5 lines · 503 chars✓ parsed·2.0 ms·8.4 KB SVG

Inclinado — líneas diagonales de padre a hijo; más compacto que el rectangular, misma dirección de lectura de izquierda a derecha.

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Vertebrates — slanted Phylogenetic tree with 8 taxa, phylogram mode, slanted layout Vertebrates — slanted Human Chimp Gorilla Dog Cat Wolf Salmon Zebrafish 0.2 substitutions/site
UTF-8 · LF · 5 lines · 347 chars✓ parsed·0.5 ms·5.5 KB SVG

Sin raíz — diseño radial de ángulo igual; resta énfasis a la raíz, enfatiza la distancia por pares entre todos los taxones.

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Vertebrates — unrooted Phylogenetic tree with 8 taxa, phylogram mode, rectangular layout Vertebrates — unrooted Human Chimp Gorilla Dog Cat Wolf Salmon Zebrafish 0.2
UTF-8 · LF · 4 lines · 314 chars✓ parsed·0.6 ms·5.7 KB SVG

4. Modo

Se establece con [mode: …] en el encabezado (o en una línea style [mode: …] en cualquier parte del cuerpo).

ModoValorSignificado de la longitud de rama
FilogramaphylogramPredeterminado. Proporcional a la distancia evolutiva (sustituciones/sitio)
CladogramacladogramIgnorado — las puntas se alinean; solo importa la topología
CronogramachronogramProporcional al tiempo de divergencia; todas las puntas se alinean al "presente"
DendrogramadendrogramLa longitud de rama es la altura de fusión — la distancia a la que dos clústeres se unen

El cronograma requiere longitudes de rama en unidades de tiempo más [mrsd: "YYYY"] (fecha de muestreo más reciente) en el encabezado para que el renderizador pueda alinear las puntas al presente.

phylo "SARS-CoV-2 variants" [mode: chronogram, mrsd: "2023"]
  newick: "((Alpha:0.5,Delta:0.4):0.3,Omicron:0.8);"
  scale "years"

Dendrograma — la salida estándar del agrupamiento aglomerativo jerárquico, no evolución. Cada nodo interno se coloca en su altura de fusión (la distancia cofenética a la que sus dos clústeres hijos se fusionan), todas las hojas se alinean en una línea base común, y las ramas son conectores de codo rectangular. Se dibuja un eje de altura para que puedas leer la distancia a la que dos hojas comparten por primera vez un clúster. Usa este modo cuando el mismo árbol Newick/de-sangría describe un resultado de agrupamiento — clústeres de expresión génica, similitud de muestras, grupos de respuestas a encuestas — en lugar de una filogenia.

Agrega una línea cut <valor> para cortar el árbol a una altura elegida: cada subárbol cuya altura de fusión cae por debajo del umbral se convierte en un clúster plano, cada uno con color distinto, y se dibuja una línea de umbral punteada a través del árbol a esa altura. Este es el equivalente en dendrograma de fcluster en scipy — convirtiendo un árbol continuo en un conjunto discreto de grupos.

phylogenetic·§ Newick / NHX
↘ preview
100%
Dendrogram: Gene expression clusters Dendrogram with 5 taxa, dendrogram mode, rectangular layout, cut at 4 into 2 clusters Gene expression clusters A B C D E 0 1 2 3 4 5 cluster distance cut = 4
UTF-8 · LF · 4 lines · 127 chars✓ parsed·1.8 ms·5.6 KB SVG

Omite cut para mostrar el dendrograma sin coloración de clústeres planos:

phylogenetic·§ Newick / NHX
↘ preview
100%
Dendrogram: Sample clustering Dendrogram with 5 taxa, dendrogram mode, rectangular layout Sample clustering A B C D E 0 1 2 3 4 5 cluster distance
UTF-8 · LF · 3 lines · 114 chars✓ parsed·0.5 ms·4.7 KB SVG

5. Resaltado de clados

Una línea clade marca un grupo monofilético con un color, una etiqueta opcional y un modo de resaltado opcional.

clade ID = (member1, member2, ...) [color: "#hex", label: "text", highlight: mode]
PropValoresEfecto
color:cadena hex ej. "#1E88E5"Color de rama y/o fondo
label:cadena entre comillasEtiqueta del clado mostrada en el margen derecho
highlight:branch, background, bothbranch colorea las líneas; background sombrea la región; both hace ambas

Los miembros son IDs de punta (hoja) de la cadena Newick. El renderizador calcula el MRCA de las puntas listadas y resalta todo el subárbol enraizado allí.

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Mammal clades Phylogenetic tree with 7 taxa, phylogram mode, rectangular layout Mammal clades Primates Human Chimp Gorilla Mouse Dog Cat Tiger 0.2
UTF-8 · LF · 4 lines · 346 chars✓ parsed·0.5 ms·6.7 KB SVG

6. Barra de escala y grupo externo

Barra de escala: scale "label" — agrega una barra en la parte inferior. La etiqueta describe la unidad (ej. "substitutions/site", "Mya"). Omítela en modo cladograma donde las longitudes de rama no tienen significado.

Grupo externo: outgroup: taxonId — registra el outgroup para documentación; el renderizador puede usarlo para marcar visualmente el taxón outgroup.

phylo "Vertebrates"
  newick: "((Human:0.1,Chimp:0.08):0.03,Lamprey:0.8);"
  outgroup: Lamprey
  scale "substitutions/site"

7. Referencia de props del encabezado

Todas las opciones van dentro de […] en la línea del encabezado phylo, o en una línea style […] en cualquier parte del cuerpo.

PropValoresPredeterminadoEfecto
layout:rectangular, slanted, circular, unrootedrectangularDiseño del árbol
mode:phylogram, cladogram, chronogram, dendrogramphylogramSemántica de la longitud de rama
unrooted(bandera)Equivalente a layout: unrooted
branch-width:número1.5Ancho de trazo de las ramas
openAngle:número (grados)0Hueco de abanico para diseño circular (0 = 360° completo)
mrsd:cadena de año entre comillasFecha de muestreo más reciente para cronogramas

8. Etiquetas y comentarios

  • Título: phylo "Tree of Life" — solo en la primera línea.
  • Etiqueta de escala: scale "substitutions/site" — una por documento.
  • Etiqueta de clado: [label: "Primates"] dentro de una línea clade.
  • Comentarios: # al inicio de una línea (después de los espacios iniciales). Los comentarios en línea al final de línea no están disponibles.

9. Errores comunes

Lo que escribisteEl analizador diceCorrección
newick: (A,B,C); (sin comillas)PhyloParseError: Phylo document must start with 'phylo'Pon la cadena Newick entre comillas: newick: "(A,B,C);"
Nombre de punta con espacio: Homo sapiens:0.1Se analiza como Homo — el espacio termina un nombre sin comillasUsa guion bajo (Homo_sapiens) o comilla simple ('Homo sapiens')
El ID de hoja en clade no coincide con el nombre en NewickEl clado tiene silenciosamente 0 miembros; sin resaltadoCopia los nombres exactamente como aparecen en la cadena Newick
clade X = (A, B) sin newick: ni árbol de sangríaPhyloParseError: No tree definition foundAgrega una línea newick: o un bloque de árbol de sangría
mode: chronogram sin longitudes de ramaEl renderizador trata todas las longitudes como 0; las puntas se superponen en la raízAgrega :length a cada arista en la cadena Newick
Línea root: no detectadaSi la línea root: tiene un espacio en el nombre (ej. My root:) el árbol de sangría no se activaUsa una etiqueta de raíz de una sola palabra o root:
Newick con nombres de nodos internos: (A,B)ancestor:0.5Se analiza correctamente — ancestor es la etiqueta del nodo internoAdmitido; los nombres internos aparecen en los nodos internos

10. Gramática (EBNF)

document        = header (blank | comment | newick-line | scale-line
                    | outgroup-line | clade-line | style-line | cut-line | indent-line)*

header          = "phylo" ( WS quoted-string )? ( WS "[" props "]" )? NEWLINE
quoted-string   = '"' any-char-but-quote* '"'

newick-line     = "newick:" WS quoted-newick NEWLINE
scale-line      = "scale" ( WS quoted-string )? NEWLINE
outgroup-line   = "outgroup:" WS id NEWLINE
cut-line        = "cut" WS number NEWLINE       // dendrogram mode: flat-cluster threshold height
clade-line      = "clade" WS id WS "=" WS "(" id ("," id)* ")"
                    ( WS "[" clade-props "]" )? NEWLINE
style-line      = "style" WS "[" props "]" NEWLINE

// Indent tree — triggered by a line ending in ":" with no spaces
indent-tree     = root-line indent-node*
root-line       = id ":" NEWLINE
indent-node     = INDENT ( id ":" length | ":" length | id ) ( WS "[" number "]" )? NEWLINE

props           = prop ("," prop)*
prop            = "layout:" layout-value
                | "mode:" mode-value
                | "unrooted"
                | "branch-width:" number
                | "openAngle:" number
                | "mrsd:" quoted-string

clade-props     = clade-prop ("," clade-prop)*
clade-prop      = "color:" quoted-string
                | "label:" quoted-string
                | "highlight:" ( "branch" | "background" | "both" )

layout-value    = "rectangular" | "slanted" | "circular" | "unrooted"
mode-value      = "phylogram" | "cladogram" | "chronogram" | "dendrogram"

// Newick grammar (embedded, parsed separately)
newick          = subtree ";"?
subtree         = leaf | internal
internal        = "(" subtree ("," subtree)* ")" name? nhx? length?
leaf            = name nhx? length?
name            = unquoted-name | "'" single-quoted "'")
length          = ":" number
nhx             = "[" number "]"                     // plain bootstrap
                | "[&&NHX:" nhx-pair (":" nhx-pair)* "]"
nhx-pair        = key "=" value

id              = [a-zA-Z] [a-zA-Z0-9_-]*
number          = /[+-]?[0-9]+(\.[0-9]+)?([eE][+-]?[0-9]+)?/
comment         = INDENT "#" any NEWLINE

Fuente autoritativa: src/diagrams/phylo/parser.ts. Si esto diverge del analizador, el analizador tiene prioridad — por favor, abre un issue.


11. Cumplimiento de estándares

Los árboles filogenéticos de Schematex siguen la especificación del formato Newick (tal como se documenta en el paquete PHYLIP) para la serialización del árbol principal, y la convención NHX (New Hampshire Extended) para los valores de soporte de bootstrap. El campo B= en los corchetes NHX es el único campo NHX renderizado visualmente hoy; todos los demás campos se analizan y almacenan pero no se muestran.

Lo que está implementado hoy:

  • ✅ Topología Newick, longitudes de rama, nombres entre comillas, politomías
  • ✅ Valores de bootstrap — simples [95] y NHX [&&NHX:B=95]
  • ✅ Diseños rectangular, inclinado, circular y sin raíz
  • ✅ Modos filograma, cladograma y cronograma
  • ✅ Resaltado de clados (color de rama, sombreado de fondo, ambos)
  • ✅ Barra de escala
  • ✅ DSL de sangría alternativo
  • ⏳ Documentos multi-árbol (bosque) — ver §12
  • ⏳ Eje calibrado en tiempo para cronogramas (escala geológica)
  • ⏳ Iconos o imágenes por punta
  • ⏳ Campos NHX más allá de B= (especie, taxonomía, eventos de duplicación)

Referencias:

  • Felsenstein, J. (1986). The Newick tree format. PHYLIP documentation.
  • Zmasek, C.M. & Eddy, S.R. (2001). ATV: Display and manipulation of annotated phylogenetic trees. Bioinformatics, 17(4), 383–384. (NHX specification)
  • Felsenstein, J. (2004). Inferring Phylogenies. Sinauer Associates.

12. Ejemplos relacionados

phylo·§ Newick/NHX
Phylogenetic Tree: Bacterial Diversity Phylogenetic tree with 10 taxa, phylogram mode, rectangular layout Bacterial Diversity Ecoli Salmonella Vibrio Bacillus Staph Listeria Myco_tb Myco_leprae Strepto Lactobacillus 98 85 92 100 78 0.2 substitutions/site
Bacterial diversity (ten-taxon tree)
Ten-taxon bacterial phylogenetic tree from a Newick/NHX string with bootstrap support values, three colored clade arcs, and a branch-length scale bar.
research & analysis

13. Hoja de ruta

Planificado — aún no se puede analizar. No uses esto en DSL generado hoy; el analizador lo rechazará o ignorará.

  • Documentos multi-árbol — un archivo phylo con más de un bloque newick: (ej. árboles de genes vs. árbol de especies).
  • Eje de tiempo geológico para cronogramas — un eje X etiquetado por épocas (Cenozoico / Mesozoico etc.) en lugar de una escala numérica simple.
  • Metadatos por punta — adjuntar rasgos o marcadores con color a puntas individuales sin declarar un clado completo (ej. tip Ecoli [color: "#F00", shape: star]).
  • Campos NHX más allá del bootstrap — renderizar especie (S=), duplicación (D=) y eventos de transferencia (Tr=) como símbolos en las ramas.
  • Tanglegrama — dos árboles mostrados uno al lado del otro con líneas de conexión que vinculan las puntas correspondientes.

Realiza seguimiento en los issues de GitHub si necesitas alguno de estos antes.

Found this useful?

Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.