Giter VIP home page Giter VIP logo

ecologia-evolutiva's People

Contributors

paternogbc avatar

Watchers

 avatar  avatar  avatar

ecologia-evolutiva's Issues

Estou com alguns problemas no meu código ao realizar analise filogenetica

Banco de dados
dados_analise.txt

Poderiam me ajudar com o código?

#Make a phylogenetic tree with R code from a spreadsheet using a megatree published with V.PhyloMaker.

#V.PhyloMaker: doi.org/10.1111/ecog.04434
#phytools: doi.org/10.1111/j.2041-210X.2011.00169.x

#Install packages

#devtools::install_github("jinyizju/V.PhyloMaker")
#install.packages("ape")
#install.packages("phangorn")
#install.packages("phytools")
#install.packages("geiger")
install.packages("htmltools")
install.packages("picante")
install.packages("V.PhyloMaker2")
library(V.PhyloMaker)
library(picante)
library(htmltools)

#defina o diretorio
setwd("~/ANALISE DE FILOGENIA/DADOS COM ESPECIES EXCLUIDAS")
#carregando planilha
dados <- read.table("dados_analise.txt", h=T, stringsAsFactors = T)

#separar especies, genero e familia
summary(dados)

dados_filogenia<- as.data.frame(dados[,c(3,4,5)])

criar a matriz de distância filogenética

library(ape)
dist_phylo <- cophenetic(phylo.maker(dados_filogenia)$phylo)

#Note: 1 taxa fail to be binded to the tree, especie ""Piranhea_securinega" não foi encotrada/ excluida
library(dplyr)
dados_atual<-filter(dados,species != "Piranhea_securinega")
summary(dados_atual)
dim(dados)
dim(dados_atual)# as linhas com a especie Piranhea_securinega foram excluidas

#rodando a analise filogenetica sem a especie excluida.

dados_filogenia_atual<- as.data.frame(dados_atual[,c(3,4,5)])

criar a matriz de distância filogenética

library(ape)
dist_phylo <- cophenetic(phylo.maker(dados_filogenia_atual)$phylo)

#todas as especies foram encontradas na arvore 42 especies ....

summary(dados_filogenia_atual)
#Load packages
library(V.PhyloMaker)
library(phytools)

#Create phylogenetic tree (esse comando demora um pouco a rodar)
phy <- phylo.maker(dados_filogenia_atual)

phy$species.list

###usando apenas o cenario 3
#You only need part of this object to draw your tree.
#Extract the useful part
tree <- phy$scenario.3
plot(tree)
#Plot the tree
phytools::plotTree(tree)
read.tree

Carregar a biblioteca phytools

library(phytools)

Plotar a árvore com personalizações

plotTree(tree, # Árvore filogenética
type = "fan", # Tipo de plotagem: estilo de leque
fsize = 0.7, # Tamanho das folhas
lwd = 2, # Largura das linhas
ftype = "i", # Tipo de folhas: interno
edge.color = "black", # Cor das linhas
edge.lty = 1, # Estilo das linhas: sólido
edge.lwd = 1.5, # Largura das linhas
tip.color = "red", # Cor das pontas (folhas)
tip.pch = 19, # Tipo de ponto das pontas (folhas)
tip.cex = 1.5, # Tamanho do ponto das pontas (folhas)
show.node.label = TRUE, # Mostrar rótulos dos nós
show.tip.label = TRUE, # Mostrar rótulos das pontas (folhas)
label.offset = 0.2, # Distância do rótulo em relação ao nó ou ponta
label.font = 2, # Estilo do rótulo: negrito
cex = 0.9, # Tamanho do texto
main = "Árvore Filogenética Personalizada", # Título do gráfico
direction = "upwards", # Direção da árvore
adj = 0.5, # Ajuste horizontal do texto
col = "darkblue", # Cor do texto
col.lab = "darkgreen") # Cor dos rótulos

Contar o número de nós na árvore

Nnode <- length(tree$node.label)

Contar o número de espécies na árvore

Nsp <- length(tree$tip.label)

Verificar se existem politomias na árvore

politomias <- Nnode != (Nsp - 1)

Se houver politomias, contar quantas

if (politomias) {
num_politomias <- (Nsp - 1) - Nnode
} else {
num_politomias <- 0
}

Imprimir o resultado

cat("Existem politomias na árvore:", politomias, "\n")
cat("Número de politomias na árvore:", num_politomias, "\n")

Carregar o pacote necessário

library(ape)

Plotar a árvore com cores nos nós

plot(tree, type = "fan", cex = 0.8, lwd = 5)

Definir as cores para os nós da árvore

cores <- c("red", "blue", "green", "purple") # Defina as cores desejadas

Adicionar cores aos rótulos dos nós

nodelabels(pch = 21, bg = cores)
tiff("arvore.tiff", width = 800, height = 600) # Ajuste os valores de largura e altura conforme necessário
plot(tree, type = "fan", cex = 0.5, lwd = 5)
nodelabels(pch = 21, bg = cores)
dev.off()

#fazendo de outra forma

Carregar o pacote necessário

library(ape)

Plotar a árvore com cores nos nós

plot(tree, type = "fan", cex = 0.8, lwd = 5)

Definir as cores para os nós da árvore

cores <- c("red", "blue", "green", "purple") # Defina as cores desejadas

Adicionar cores aos rótulos dos nós

nodelabels(pch = 21, bg = cores)

Obter as distâncias das arestas

edge.dist <- tree$edge.length

Adicionar as distâncias como rótulos nos nós

nodelabels(text = round(edge.dist, 2), frame = "none", cex = 0.6, adj = c(0.5, -0.2), col = "black", font = 1)

tiff("arvore.tiff", width = 800, height = 600) # Ajuste os valores de largura e altura conforme necessário
plot(tree, type = "fan", cex = 0.5, lwd = 5)
nodelabels(pch = 21, bg = cores)
dev.off()

####deu bom srsrs

#some information
tree$Nnode
tree$edge.length
tree$edge
tree$node.label
tree$tip.label
sum(tree$edge.length)

##salvando a tree
write.tree(tree, "Ecofilotree2.csv")

#Export the tree for manual editing or use in other software
write.tree(tree, "tree.tre")
#Note the .tre file extension here

#Import the tree back into R
#Or import a tree made with other software into R
tree = read.tree("tree.tre")

#fazer arvore usando o ggplot

instal ggtree para fazer a arvore

if (!require("BiocManager", quietly = TRUE))
install.packages("BiocManager")

#BiocManager::install("ggtree")
library(ggtree)
ggtree(tree)
ggtree(tree)+geom_tiplab()

#viewClade(p,MRCA(p, tip=("I", "L")))

##################### novo codigo
#M?tricas com dendogramas====
#_Diversidade filogen?tica====
library(ape)
library(picante)

#tree <- read.tree("ants.phylo.txt") #Olhem a estrutura do arquivo .txt. Essa ? uma forma que comumente encontramos arquivos de dendogramas filogen?ticos. Para organizar isso utilizamos a fun??o read.tree() do pacote ape
plot(tree, cex=0.6) #Visualizando o dendograma

#montando a tabela de comunidade
dados_atual #dados
library(reshape2)
summary(dados_atual)
com<- dcast(dados_atual,area~species,value.var = "species") #data frame da comunidade
colnames(com)
com<-com[,-c(1)]

#Para calcular a diversidade filogen?tica de cada uma das esp?cies do dados atual precisamos de uma medida de dist?ncia filogen?tica entre pares de esp?cies. Como a ?rvore filogen?tica permite calcular isso, podemos utilizar a dist?ncia cofen?tica para obter a dist?ncia entre esp?cies par-a-par.
phydist <- cophenetic(tree)
phydist
dim(phydist)

#Agora, confira se todas as esp?cies das comunidades est?o na matriz de dist?ncias filogen?ticas.
summary(colnames(com) %in% colnames(phydist))

##PD##
#Agora calculamos a diversidade filogen?tica com o ?ndice PD de Faith (1992).
#O objeto aqui ? a ?rvore filogen?tica: tree
PD <- pd(com, tree)

#criando uma tabela com os resultados de PD, MPD, MNTD
(tabela_resultados <- as.data.frame(PD))

Calcular a MNTD (distância média entre as espécies) usando a matriz de distância filogenética

(MNTD <- mean(phydist))
#adicionando a distancia média (MNTD) nos resultados
(tabela_resultados$MNTD<-MNTD)
tabela_resultados

##MPD##
#Agora vamos calcular a diversidade filogen?tica com o ?ndice MPD de Webb et al. (2002).
#O objeto aqui ? a dist?ncia par-a-par gerada da ?rvore filogen?tica: phydist
(tabela_resultados$MPD <- mpd(com, phydist))
tabela_resultados

names(tabela_resultados)
tabela_resultados$MNTD
tabela_resultados$PD
tabela_resultados$MPD

#exportando tabela de resultados

#Diversidade taxonomica====
#_Metricas Classicas====
library(vegan)
library(dplyr)
library(hillR)
library(GGally)
library(vegan)
library(iNEXT)
library(ggplot2)
library(tidyverse)
library(reshape2)

head(dados) #Primeiras linhas da tabela
summary(dados) #Sum?rio da tabela
str(dados) #Estrutura da tabela
names(dados) #Nomes das colunas da tabela

#PARA CORIBE

dados_formatados_coribe <- dcast(dados, area~species, value.var = "species")
summary(dados_formatados_coribe)

com_coribe <- dados_formatados_coribe[,-c(1)]

#_Numeros de Hill

q=0 == species richness

(tabela_resultados$Species_Richness_q0 <- hill_taxa(comm = com_coribe, q = 0, MARGIN = 1)) #Hill q=0
tabela_resultados

q=1 == Shannon diversity/entropy

(tabela_resultados$Shannon_q1 <- hill_taxa(comm = com_coribe, q = 1, MARGIN = 1)) #Hill q=1

q=2 == Simpson diversity

(tabela_resultados$Simpson_q2 <- hill_taxa(comm = com_coribe, q = 2, MARGIN = 1)) #Hill q=2
tabela_resultados

#medtricas classicas
#_Shannon-Wiener (H')
#Quanto maior o valor de H', maior ? a diversidade.
tabela_resultados$H_shannon <- diversity(x = com_coribe, index = "shannon")

#_Simpson
(tabela_resultados$D_simpson <- diversity(x = com_coribe, index = "simpson"))

#_Riqueza
(tabela_resultados$sp_rich <- specnumber(com_coribe))

#_Abund?ncia
(tabela_resultados$sp_abund <- rowSums(com_coribe))
tabela_resultados

#salvando a tabela com as metricas da comunidade
write.csv2(tabela_resultados,"metricas_comunidade")

Cobertura amostral ====

out1 <- iNEXT(t(com_coribe), q=0, datatype="abundance")
out1$DataInfo

(plot_sp <- ggiNEXT(out1, type=1, se=TRUE, grey=FALSE)

  • theme_classic(base_size = 18)
  • theme(legend.position="right")
  • labs(y="Número de espécies", x = "Núnero de individuos"))

#plot para cobertura amostral
(plot_C_amnostral <- ggiNEXT(out1, type=2, se=TRUE, grey=FALSE)

  • theme_classic(base_size = 18)
  • theme(legend.position="right")
  • labs(y="Cobertura amostral", x = "Número de individuos"))

###aqui usa os dados da parcel, area em função da especie

DIVERSIDADE ====

#ajeitando os dados para o formato correto (comprido) separando por data e local
dados_formatados <- dcast(dados, area+parcela~species, value.var = "species")
summary(dados_formatados)

com <- dados_formatados[,-c(1,2)] #Novo objeto agora s? com a comunidade, apenas as esp?cies!!

#_Numeros de Hill

q=0 == species richness

(Species_Richness_q0 <- hill_taxa(comm = com, q = 0, MARGIN = 1)) #Hill q=0

q=1 == Shannon diversity/entropy

(Shannon_q1 <- hill_taxa(comm = com, q = 1, MARGIN = 1)) #Hill q=1

q=2 == Simpson diversity

(Simpson_q2 <- hill_taxa(comm = com, q = 2, MARGIN = 1)) #Hill q=2

#criar uma tabela com todas as metricas para incluir as metricas
(tab_result <- data.frame(dados_formatados[,c(1,2)], Species_Richness_q0,Shannon_q1,Simpson_q2)) #Olha como ficou legal! =D

Especifique o caminho do arquivo CSV que você deseja salvar

caminho_arquivo <- "~/ANALISE DE FILOGENIA/DADOS COM ESPECIES EXCLUIDAS/tabela_resultados.csv"

Salvar a tabela em formato CSV

write.csv(tab_result, file = caminho_arquivo, row.names = FALSE)

#_Abund?ncia
(tab_result$sp_abund <- rowSums(com))

##_Plotagem====
library(reshape2)
str(tab_result)
tab_ggplot <- melt(tab_result, id= c("area","parcela"))

#Criar uma tabela longa, o ggplot usa matriz de dados e norteia pelosnomes das colunas
head(tab_ggplot) #Primeiras linhas da tabela
dim(tab_ggplot) #Dimens?o [linhas , colunas]

cor_plot <- c("green", "gray80") #Objeto com as cores que ser?o utilizadas

library(ggplot2)
ggplot(tab_ggplot, aes(x=area , y=value, fill=area )) +
geom_boxplot()+ #fazer um boxplot
theme_bw()+ #um tema, sair do fundo cinza #Inserir as cores
facet_wrap(~variable, scales = "free")+
scale_fill_manual(values ="#1B9E77")+
stat_summary(fun.data ="mean_se",geom = "point",size=2.5)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.