O primeiro passo é entender como árvores são representadas no R. O formato mais comumente utilizado é o formato nexus, no qual a relação entre espécies é representada por uma série de parênteses. Por exemplo, se temos uma espécie “A” como irmã de outra “B” e as duas mais distantemente relacionadas a uma terceira espécie chamada “C”, podemos representar essa filogenia da seguinte forma:
((A,B),C);
Note que o “;” ao final é muito importante para indicar ao programa o final da descrição da árvore.
No R, o principal pacote para trabalhar com árvores chama-se “ape”, enquanto que o pacote que usaremos pra calcular diversidade filogenética chama-se “picante”
Vamos visualizar essa árvore:
library(ape)
tr<-read.tree(text="((A,B),C);")
plot(tr)
Normalmente você entraria com a árvore como um arquivo, algo como
tr<-read.tree(file=“minha_arvore.tre”)
Note que simplesmente representamos a árvore filogenética sem indicar informações sobre os comprimentos de ramos respectivos. Na verdade, a informação sobre os comprimentos de ramos é muito importante, já que representam a “oportunidade” para o acúmulo de variação fenotípica que queremos capturar com a diversidade filogenética.
Para representarmos os comprimentos de ramos, usamos o símbolo “:” seguido de um número representando o comprimento do ramo correspondente. Por exemplo, vamos fazer duas árvores com a mesma topologia e comprimentos de ramos diferentes.
tr1<-read.tree(text="((A:0.1,B:0.1):0.9,C:1.0);")
tr2<-read.tree(text="((A:0.7,B:0.7):0.3,C:1.0);")
Agora podemos plotá-las lado a lado.
layout(matrix(1:2, ncol=2))
plot(tr1)
plot(tr2)
Note que, mesmo tendo a mesma topologia, a árvore da direita contém uma maior diversidade filogenética do que a árvore da esquerda.
A maneira mais simples de calcular explicitamente a diversidade filogenética é somar todos os ramos da árvore.
sum(tr1$edge.length)
## [1] 2.1
sum(tr2$edge.length)
## [1] 2.7
Como esperávamos, a diversidade filogenética na árvore 2 é 2.7, enquanto a diversidade filogenética da árvore 1 é 2.1.
No nosso caso, poderemos fazer esses passos de uma maneira mais eficiente, olhando várias localidades simultaneamente.
tr_pheidole<-read.tree(text="(((t2:1.8,((t4:0.96,((t6:0.48,t7:0.48):0.024,t5:0.51):0.45):0.18,t3:1.1):0.68):0.23,(t8:0.43,(t9:0.16,t10:0.16):0.27):1.6):1.3,t1:3.4);")
plot(tr_pheidole)
Digamos que temos três localidades com as seguintes composições:
dat<-matrix(c(1,0,0,1,0,1,1,0,0,1,0,1,0,1,0,1,0,1,1,1,1,0,0,1,0,1,0,1,0,1), nrow=3)
colnames(dat)<-tr_pheidole$tip.label
rownames(dat)<-c("localidade1","localidade2","localidade3")
dat
## t2 t4 t6 t7 t5 t3 t8 t9 t10 t1
## localidade1 1 1 1 1 0 1 1 0 0 1
## localidade2 0 0 0 0 1 0 1 0 1 0
## localidade3 0 1 0 1 0 1 1 1 0 1
Podemos então calcular a diversidade filogenética de cada localidade.
library(picante)
## Loading required package: vegan
## Loading required package: permute
## Loading required package: lattice
## This is vegan 2.0-10
## Loading required package: nlme
pd(dat,tr_pheidole)
## PD SR
## localidade1 13.11 7
## localidade2 5.81 3
## localidade3 11.26 6
Os resultados são apresentados em duas colunas, com a primeira apresentando a diversidade filogenética como vimos acima, enquanto a segunda coluna é o número de espécies. Podemos perceber que a localidade 1 apresenta a maior diversidade filogenética (13.114), enquanto a localidade 2 apresenta o menor valor (5.810).