Começando A Evolução Com Uma Grande Árvore - Começando a Evolução com uma Grande Árvore – Ler GG
Começando a Evolução com uma Grande Árvore – Ler GG

Construindo árvores filogenéticas grandes: o que realmente acontece

Quando você tem centenas ou milhares de sequências e decide montar uma árvore, o problema não é mais só biologia. É memória, tempo de CPU e uma série de decisões ruins que você toma porque ninguém te avisou. Começando a evolução com uma grande árvore, o primeiro choque é entender que o software vai tentar carregar tudo na RAM de uma vez e, dependendo do método, não conseguir.

começando a evolução com uma grande árvore

A prática real funciona assim. Você alinha as sequências, escolhe um modelo de substituição, roda a inferência e, se tiver sorte, termina em algumas horas. Se tiver azar, o job morre no meio do caminho e você gasta dois dias refazendo. Vou explicar o que faz diferente.

O alinhamento define tudo, não é segunda prioridade

Muita gente trata o alinhamento múltiplo como algo rápido que passa antes da árvore. Isso é um erro caro. Um alinhamento ruim com 500 sequências pode gerar uma topologia que parece bonita mas é basicamente ruído. Use MAFFT com a opção L-INS-i para conjuntos moderados até cerca de 200 sequências. Para conjuntos maiores, IQ-TREE com --mdef e depois refina com R-INS-i nas regiões mais conservadas. TrimAl com o parâmetro -automated1 remove colunas problemáticas sem você precisar chutar um threshold fixo. Coluna com mais de 40% de gaps deve ser descartada. Ponto.

Escolha do modelo: deixe o software fazer o trabalho

Ironicamente, a etapa mais negligenciada é essa. Você não precisa adivinhar um modelo. IQ-TREE com a flag -m MFP+MERGE testa modelos e combina submodelos automaticamente. Para árvores grandes, o cenário de mistura (Mixture model) como C60 ou LG4X costuma performar melhor do que modelos simples como WAG ou JTT padrão, especialmente quando você tem heterogeneidade composicional entre espécies. Cuidado com o modelo que o computador escolher sozinho quando o alinhamento for pequeno. Com menos de 100 sequências, modelos de mistura superparam e a árvore fica instável. Nesse caso, stick com um modelo clássico.

Método de inferência: máxima verossimilhança vs neighbor joining

Neighbor joining é rápido. Muito rápido. Mas para conjuntos acima de 300 sequências, ele produz topologias que parecem plausíveis e já são basicamente descartáveis. Use ML mesmo que demore. RAxML-NG e IQ-TREE são as opções reais. RAxML-NG com -m GTRGAMMAX e --threads auto roda bem em servidores. IQ-TREE com -nt AUTO e ultrafast bootstrap com 1000 replicatas dá suporte sólido em geral entre 2 e 6 horas para 500 sequências em um nó com 16 threads. Aqui vai algo que ninguém conta: a bootstrap ultrarrápida do IQ-TREE é razoavelmente confiável para topologias amplas, mas falha feio em ramos curtos. Se o seu foco é resolver relações internas de um clado pequeno dentro de uma árvore gigante, faça bootstrap tradicional de 100 replicatas naquele subclado. Demora mais, mas o suporte é real.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Memória e estabilidade: o problema que eu enfrentei

Eu tive um job de 800 sequências que rodava no RAxML-NG e morria sempre na mesma iteração com erro de alloc. A árvore era grande, o modelo GTRGAMMA era pesado, e o servidor tinha 128GB de RAM que simplesmente não eram suficientes para a matriz de probabilidade completa. A solução foi simples e anti-intuitiva: parti o alinhamento em dois blocos de cerca de 400 sequências cada, com uma região de sobreposição de 30 sequências conservadas, rodei as árvores separadamente e usei o ASTRAL para sintetizar os gene trees em uma árvore espécie. Não é perfeito, porque a história de cada locus pode diferir da história dos indivíduos, mas para dados com suficiente sinal filogenético o resultado é estável e evita o crash.

Visualização: não use figTree para árvores grandes

FigTree é útil para árvores pequenas. Para mais de 200 tips, ele trava ou vira uma bola de lã ilegível. Use ggtree no R ou IcyTree no navegador. ggtree com o pacote ggplot2 permite redesenho completo, rotação de nós, coloração por grupo taxonômico e exportação em alta resolução. A funcionalidade pivot_tree() do ggtree ajuda a rearranjar a árvore para destacar clados de interesse sem alterar a topologia subjacente.

Dica prática sobre long-branch attraction

Árvores grandes sofrem muito com long-branch attraction. Sequências muito divergentes tendem a se agrupar artificialmente. A solução clássica é remover os outliers ou usar modelos com gammas mais compartimentados. Outro truque menos conhecido: adicione taxa saturadas cuidadosamente como anchoring groups. Não para mudar o resultado, mas para testar se a sua árvore é robusta a diferentes configurações de outgroup. Se a topologia interna muda quando você troca o outgroup, você tem um problema sério de atração de ramo longo.

Quando desistir da árvore grande

Se o seu alinhamento tem menos de 30% de informação filogenética útil, nenhuma quantidade de CPU vai resolver. Verifique com TreeShake ou com uma análise de entropia de coluna. Se a maior parte das suas posições são variáveis mas não filogeneticamente informativas, considere focar em domínios conservados ou reduzir o conjunto de sequências para os representativos mais divergentes. Melhor uma árvore de 150 sequências bem resolvida do que uma de 800 com suporte baixo em tudo.

Downloads e ferramentas recomendadas

IQ-TREE: http://www.iqtree.org. RAxML-NG: https://github.com/amkozlov/raxml-ng. ggtree: disponível via Bioconductor. TrimAl: http://trimal.cgenomics.org. ASTRAL: https://github.com/smirarab/ASTRAL. MAFFT: https://mafft.cbrc.jp/alignment/software. Tudo isso é ferramenta padrão. O diferencial é saber qual combinar e quando parar de insistir com um conjunto de dados que simplesmente não suporta uma árvore grande confiável.