Nesta prática, você aprenderá a estimar estados (e valores) ancestrais de caracteres. Os exercícios abaixo foram baseados em exemplos disponíveis no sítio eletrônico de Liam Revell: http://www.phytools.org.

Primeiramente, limpe sua área de trabalho.

rm(list=ls())

Carregue os pacotes a serem usados (phytools e ape). Se você ainda não os tem instalados, antes de carregá-los, deve utilizar a função “install.packages”.

library(phytools)
library(ape)

Utilizaremos dados disponíveis no próprio pacote phytools, provenientes do artigo de Mahler et al. (2010): https://goo.gl/JUUHE7. O objeto “anoletree” consiste em uma filogenia de Anolis com um caráter discreto de “ecomorfos” mapeado para as espécies. Vamos preparar os dados para utilização.

*Obs.: significado das siglas dos ecomorfos: CG=crown-giant, GB=grass-bush, TC=trunk-crown, TG=trunk-ground, Tr=trunk, Tw=twig (Losos & Ricklefs 2009; https://www.nature.com/articles/nature07893).

data(anoletree)
x <- getStates(anoletree, "tips")
tree <- anoletree

Vamos plotar os ecomorfos na árvore filogenética!

par(mar=c(0,1,0,1))
plot(as.phylo(tree), cex=0.5)
cols <- setNames(palette()[1:length(unique(x))], sort(unique(x)))
tiplabels(pie = to.matrix(x, sort(unique(x))), piecol = cols, cex = 0.2)

#Rode cols #para ver a cor de cada ecomorfo (CG=crown-giant, GB=grass-bush, TC=trunk-crown, TG=trunk-ground, Tr=trunk, Tw=twig)

Podemos utilizar a função “ace” do ape para estimar os estados ancestrais do caráter discreto. Utilizaremos o método de máxima verossimilhança.

discML <- ace(x, tree, type = "discrete", method = "ML")
discML$lik.anc

Vamos plotar os estados ancestrais do caráter nos nós da filogenia. Se você ainda está com o gráfico anterior aberto, não precisa rodar de novo as quatro primeiras linhas, mas somente a última (“nodelabels”).

par(mar=c(0,1,0,1))
plot(as.phylo(tree), cex=0.5)
cols <- setNames(palette()[1:length(unique(x))], sort(unique(x)))
tiplabels(pie = to.matrix(x, sort(unique(x))), piecol = cols, cex = 0.2)
nodelabels(pie = discML$lik.anc, piecol = cols, cex = 0.4)

Obs.: Daqui em diante, a prática é extra.

Agora podemos trabalhar com um caráter contínuo, comprimento do corpo dos lagartos. Vamos baixar os dados do sítio eletrônico do Phytools. Aqui está o caráter contínuo: https://goo.gl/oQDFcF. Apenas por facilidade, vamos baixar novamente a filogenia (agora apenas com os epítetos específicos): https://goo.gl/zpVqQt. Carregue ambos. Lembre de (1) salvar a filogenia com a extensão “.txt” e (2) salvar filogenia e dados de caráter no diretório de trabalho.

anole.tree<-read.tree("Anolis.txt")
anole.tree
svl<-read.csv("svl.csv",header=TRUE,row.names=1)
svl<-setNames(svl[,1],rownames(svl))

Podemos estimar os valores ancestrais de caráter contínuo utilizando como método a máxima verossilhança residual (consulte o help) e como modelo evolutivo o movimento Browniano. Para isso, utilizaremos o ace.

ace_MLcont <- ace(svl,anole.tree, type = "continuous", method="REML", model = "BM")
ace_MLcont$ace

Agora vamos mapear os valores ancestrais de tamanho de corpo estimados pela máxima verossilhança.

obj<-contMap(anole.tree,svl,plot=FALSE,lims=c(3.3,5.2))
obj<-setMap(obj,invert=TRUE)
par(mar=c(0,1,0,1))
plot(obj,fsize=c(0.4,1),lwd=c(3,7),leg.txt="log(SVL)")

No entanto, para cada nó, a máxima verossilhança gera um intervalo de confiança de valores possíveis do caráter contínuo. Podemos plotar esses valores com barras de erro padronizadas pelo intervalo de confiança de 95%. O comprimento da barra de erro é relativa à largura do intervalo de confiança. Se você ainda está com o último plot aberto, é só rodar a última linha (“errorbar.contMap”)

par(mar=c(0,1,0,1))
plot(obj,fsize=c(0.4,1),lwd=c(3,7),leg.txt="log(SVL)")
errorbar.contMap(obj, lwd=6)

A partir da interpretação do mapeamento do caráter comprimento na árvore filogenética dos Anolis, você pode lançar uma hipótese de que há ou não há sinal filogenético nesse caráter. O que você acha? Você pode testar essa hipótese usando a estatística K e o modelo nulo que montamos em aula anterior para gerar valor de P com base em movimento Browniano.

Não serão cobrados exercícios desta aula. Aproveite-a para discutir a ideia de seu projeto com o professor e monitor(a). Aproveite a semana sem exercício para avançar no trabalho final.