Hoje, a prática será sobre Contrastes Filogenéticos Independentes (Felsenstein, 1985). Estes exercícios foram adaptados dos exercícios da página de Liam Revell (https://goo.gl/vnjHyq).

Primeiramente, limpe sua área de trabalho e gráficos.

rm(list=ls())
graphics.off()

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”.

#install.packages("phytools")
library(phytools)
library(ape)

Baixe a árvore filogenética dos Anolis de https://goo.gl/zpVqQt e os dados de características contínuas de https://goo.gl/Z4uvxM. Carregue e visualize ambos.

tree<-read.tree("Anolis.tre")
tree
traits <- read.csv("caracteristicas.csv", row.names = 1)
traits

Agora visualize a árvore filogenética.

par(mar=c(0.05,1,0.05,0.1),cex=0.7)
plot(tree)

Veja se os nomes das espécies conferem entre filogenia e características. O comando %in% buscará se cada nome de espécie existente na árvore também consta na matriz de características.

tree$tip.label %in% rownames(traits)
summary(tree$tip.label %in% rownames(traits))

Há muitas espécies da filogenia que não estão na matriz de características. Vamos podar a árvore para manter somente aquelas espécies para que possuímos dados de características. Para isso podemos usar as funções de subconjunto (“subset”) e depois a que remove terminais da filogenia (“drop.tip”).

remove_tips <- subset(tree$tip.label, !tree$tip.label %in% rownames(traits))
tree_red <- drop.tip(tree, remove_tips)

Vamos visualizar a árvore “podada”.

par(mar=c(0.05,1,0.05,0.1),cex=0.8)
plot(tree_red)

Agora, vejamos se a ordem das espécies é a mesma entre filogenia e matriz de características.

tree_red$tip.label%in%rownames(traits)
tree_red$tip.label==rownames(traits)

Como a ordem das espécies não é a mesma entre filogenia e características, vamos organizar as espécies na matriz de características conforme a filogenia.

traits_org <- traits[tree_red$tip.label,]
  
tree_red$tip.label==rownames(traits_org)

Digamos que tenhamos uma expectativa de que animais mais compridos são mais pesados. Ou seja, quanto maior o lagarto, mais ele necessitará de recursos alimentares, o que levará a uma massa corpórea maior. Vamos avaliar relação entre essas duas características, comprimento e massa do corpo, através de uma regressão linear simples.

traits_org$comprimento

reg<-lm(traits_org$massa~traits_org$comprimento)
summary(reg)

Vamos plotar as duas variáveis em um gráfico de dispersão. Como a relação foi significativa, já podemos plotar também a linha de regressão. (Dica: aproveite e adicione títulos apropriados aos eixos x e y, utilizando os argumentos “xlab” e “ylab” dentro da função “plot”).

plot(traits_org$massa~traits_org$comprimento,cex=1.4,pch=21)
abline(reg,lwd=2,lty="dashed")

Aparentemente, comprimento do corpo explica a massa. Mas será que essa relação se deve a contrastes basais na filogenia ou à convergência evolutiva? Para avaliar se eventos cladogenéticos profundos no tempo influenciam essa relação, podemos utilizar contrastes filogenéticos independentes (PICs). Os contrastes filogenéticos independentes removerão um eventual efeito da filogenia sobre a correlação.

Podemos também plotar um “espaço morfofilogenético” com a função “phylomorphospace” para tentar antever se haverá algum efeito da filogenia.

phylomorphospace(tree_red,cbind(traits_org$comprimento,traits_org$massa),label="off",node.size=c(0,0))
points(traits_org$comprimento,traits_org$massa,pch=21,bg="grey",cex=1.4)
abline(reg,lwd=2,lty="dashed",col="red")

Antes de gerar os contrastes, é importante confirmar que a árvore filogenética é ultramétrica.

is.ultrametric(tree_red)

Agora podemos gerar os PICs para cada característica.

pic_compr <- pic(traits_org$comprimento, tree_red)
pic_massa <- pic(traits_org$massa, tree_red)

length(pic_massa)

Vamos avaliar se há correlação entre os contrastes de comprimento corpóreo e massa corpórea…

reg_pic <- lm(pic_massa~pic_compr)
summary(reg_pic)

…e plotar a relação entre os PICs das duas características. Lembre-se de plotar também a linha de regressão caso a relação seja significativa.

plot(pic_massa~pic_compr,cex=1.4,pch=21)
abline(reg_pic,lwd=2,lty="dashed")

Neste caso, a relação continua existindo mesmo entre os contrastes independentes, ou seja, mesmo após removermos o efeito de eventos cladogenéticos profundos na filogenia.

Vamos ver um outro caso de correlação entre características, agora de primatas. Para isso, baixe, carregue e visualize a árvore filogenética retirada de Lynch (1991), disponível em http://goo.gl/7zFqiQ. (Se você quiser ver o artigo original de Lynch, clique aqui: http://goo.gl/BtRX8j).

tree.primates <- read.tree("primfive.tre")
plot(tree.primates)

Agora, vamos carregar os dados de massa corpórea (Kg) e a longevidade máxima (anos) das espécies de primatas consideradas, conforme disponível em Lynch (1991).

body <- c(60, 37, 10.7, 7.6, 0.23)
longevity <- c(115, 28, 29, 18, 10)
names(body) <- names(longevity) <- c("Homo",
"Pongo", "Macaca", "Ateles", "Galago")

Vamos comparar as espécies e a ordem em que aparecem na filogenia e na matriz de características.

names(body) %in% tree.primates$tip.label
names(body) == tree.primates$tip.label

Estando os dados devidamente organizados, vamos testar a relação entre as características com uma regressão linear simples…

reg_prim<-lm(body~longevity)
summary(reg_prim)

…e plotar a relação entre as duas características. Plote a linha de regressão caso a relação seja significativa.

plot(body~longevity)
abline(reg_prim,lwd=2,lty="dashed")

Vamos tentar antever se haverá algum efeito da filogenia plotando o “espaço morfofilogenético” definido por massa corpórea, longevidade e as relações filogenéticas entre as espécies de primatas.

phylomorphospace(tree.primates,cbind(longevity,body),label="off",node.size=c(0,0))
points(longevity,body,pch=21,bg="grey",cex=1.4)
abline(reg_prim,lwd=2,lty="dashed",col="red")

Antes dos PICs, vamos checar se a árvore é ultramétrica.

is.ultrametric(tree.primates)

Podemos então seguir para os PICs e a regressão que os utiliza…

pic.body <- pic(body, tree.primates)
pic.longevity <- pic(longevity, tree.primates)
reg_prim_pic<-lm(pic.body~pic.longevity)
summary(reg_prim_pic)

…e plotar os contrastes em um gráfico de dispersão.

plot(pic.body~pic.longevity)

Exercícios:

  1. Teste se a relação entre outras duas características dos Anolis é devido contrastes basais entre linhagens ou à convergência evolutiva. Apresente os gráficos de dispersão (inclusive o de filomorfoespaço) e os resultados das regressões. Explique sua conclusão, interpretando os resultados biologicamente.

  2. Para quem quiser se aprofundar: Veja o vídeo sobre evolução de características de Anolis (https://youtu.be/rdZOwyDbyL0) - você pode colocar legendas e para traduzir automaticamente no Youtube. Repita o teste que fizemos em aula para vários pares de características dos Anolis. Pesquise sobre irradiação adaptativa e convergência evolutiva e gere uma explicação para os resultados que vocês encontrou.

  3. E nos dados de primatas, a relação entre massa corpórea e longevidade permaneceu ou desapareceu quando removemos o efeito da filogenia, ou seja, de eventos cladogenéticos profundos no tempo evolutivo dos primatas? Como você explicaria este resultado?*

*Dica: Explique os resultados, citando os valores obtidos na análise estatística e plotando os principais gráficos obtidos.