Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2014:alunos:trabalho_final:nati.aristizabal1:start

Natalia Aristizábal Uribe

nati_foto_r.jpg

Mestranda em Ecologia, Instituto de Biociências, USP.

O título da minha dissertação ainda não está definido, mas estudarei os serviços e desserviços das formigas nos cafezais em escala da paisagem para entender os efeitos da fragmentação neste sistema na Mata Atlântica. Sou orientada pelo Jean Paul Metzger do LEPAC.

Meus exercícios:

exercicio1_nataliauribe.r

exercicios4.2_4.5.r_nataliauribe.r

exercicios5_nataliauribe.r

exercicios_7_nataliauribe.r

exercicio_9.2.r

Trabalho Final : Criar uma função

Proposta A

O objetivo desta função seria fazer um análises entre a distribuição atual das espécies de uma família de aves e sua historia biogeográfica e filogenética através do tempo. Esta função utilizaria três tipos de dados, uma filogenia ultramétrica (objeto de classe “phylo”), um vetor com a principal região biogeográfica de ocorrência de cada espécie e mapas de distribuição (shape files) das espécies na filogenia.

O produto final seria um mapa juntando todas as distribuições das espécies da familia classificando cada espécie por região biogeográfica (representadas em diferentes cores), e do lado do mapa a filogenia da familia com cada linhagem de cor segundo a região biogeográfica onde ela ocurre. Esta função contribuiria a visualizar e analisar os padrões de distribuição de uma família e tentar enxergar num contexto continental a especiação e colonização da família de aves.

Proposta B

Utilizando dados de número de espécies de formigas e a sua abundância em diferentes paisagens, esta função teria como objetivo avaliar os efeitos de varios fatores ecológicos (porcentagem de coberturas florestais, porcentagem de área de plantação de café, concentração de nutrientes a diferentes distancias dos fragmentos da mata nativa e incremento ou déficit de pragas do café nesse ano de estudo), na produção de café.

Esta função tomaria estas variáveis como objetos de classe numéricos e produziria varios modelos e gráficos relacionando a diversidade com cada uma das variáveis ecológicas estudadas. Além disso, a função escolheria o melhor modelo que optimize a produção de café sobre os parâmetros e efeitos ecológicos estudados.

Natalia, achei sua proposta A muito interessante mas fiquei com uma dúvida: esse mesmo procedimento não poderia se aplicar a qualquer tipo de grupo taxonômico? Uma vez que a função rode, ela deveria funcionar para gêneros de anfíbios, famílias de samambaias, ordens de fungos ou filos de bactérias da mesma forma, certo? (E se for seguir esse plano, lembre-se de avisar o usuário sobre o formato dos dados que a função precisa.)

Já sua proposta B, é essencialmente um procedimento de seleção de modelos, pelo que eu entendi. Não tem problema propor esse tipo de função, mas o mesmo procedimento poderia ser usado para trabalhar com outros tipos de dados certo? Se você quiser fazer uma função nesses moldes, sugiro que pense de uma maneira um pouco mais geral na sua proposta, de forma que a função possa ser usada no contexto de formigas no cafezal e também em outros contextos (serpentes no avião, borboletas na plantação de alfafa…).

Nesse caso também seria bom especificar na sua proposta quais tipos de modelos a função vai utilizar e qual será o parâmetro de escolha do melhor modelo (AIC, qui quadrado, residual sum of squares, essas coisas).

—- Danilo G. Muniz

Proposta Ajustada

Olá Danilo! Muito obrigada pelos seus comentários, darei continuidade à proposta A. E sim, a ideia é que esse mesmo procedimento possa ser usado em qualquer grupo taxonómico, não só em aves. Também, terei cuidado de avisar o usuário sobre o formato que a função precisará.

Muito obrigada,

Natalia

Código da Função

PhyloDiver <- function(bioregions, shapes, data, tree, model)
{
	library(sp) # Pacote de metodos para trabalhar com dados espaciais. 
	library(rgdal) # Pacote que inclui funções para ler shapefiles no R
	library(mapdata) # Pacote que inclui funções para trabalhar com mapas
	library(rangeMapper) # Pacote que inclui função para fazer mapa de riqueza de especies
	library(maptools) # Pacote requerido por rangeMapper
	library(RColorBrewer) # Pacote para obter cores para os mapas
	library(latticeExtra) # Pacote com funções extra para manipular dados multivariados
	library(ape) # Pacote com funções para ler, manipular, escrever e analizar árvores filogenéticas
	library(phytools) # Pacote com funções para manipular e plotar filogenias
	{
	pdf("BiogegraphicRegions.pdf") # Cria um arquivo de pdf em branco onde irá por o mapa das regiões biogeográficas
	bioregions <- readShapePoly(bioregions) # Lê os dados do shapefile chamado bioregions que contem os limites biogeograficos
	bioregionsmap <- plot(bioregions, col = brewer.pal(length(bioregions@data$Region),"Dark2"), lwd = 0.1) # Plotea o shapefile com as regiões biogeagraficas
	legend("bottomleft", cex= 1.0, bty = "n", legend = bioregions@data$Region, fill = brewer.pal(length(bioregions@data$Region),"Dark2")) # Comanda os detalhes do primeiro mapa com as regiões biogegraficas
	dev.off() # Envia o pdf criado para o diretorio de trabalho 
	}
	{
	phylo <- read.tree(tree) # Lê a filogenia 
	bioregionsData <- read.table(data, header = TRUE) # Lê os dados em formato de tabela com as localidades de ocorrencia
	rownames(bioregionsData)<-bioregionsData[,1] # Define os nomes de cada linha com o taxon
	bioregionsData <- bioregionsData[match(phylo$tip.label,rownames(bioregionsData)),] # Organiza a tabela segundo a ordem da filogenia
	}
	{
	ance <- ace(bioregionsData[,2], phylo, type="discrete", method="ML", model = model) # Reconstrução ancestral
	col <- brewer.pal(length(bioregions@data$Region),"Dark2") # Define as cores dos piecharts, baseados nas mesmas cores definidas no primeiro mapa das regiões biogeográficas
	pdf("AncestralReconstruction.pdf") # Cria um arquivo de pdf em branco onde irá por a filogenia com a reconstrução ancestral
	plot(ladderize(phylo), label.offset = 0.05, lwd=0.8, cex = 0.8) # Lê e plotea a árvore com a reconstrução ancestral
	nodelabels(pie=ance$lik.anc, cex=0.8, piecol = col) # Formata os nós da árvore
	tiplabels(pie = to.matrix(bioregionsData[,2], sort(unique(bioregionsData[,2]))), piecol = col, cex = 0.4) # Formata os tips da árvore
	legend("bottomleft", cex= 0.7, bty = "n", legend = bioregions@data$Region[1:6], fill = brewer.pal(length(bioregions@data$Region),"Dark2")) # Plotea a legenda da figura
	dev.off() # Envia o pdf criado para o diretorio de trabalho 
	}
	{
	td <-tempdir() # Retorna um diretorio temporario para almacenar 
	diversitymap <- rangeMap.start(file = "diversitymap.sqlite",  overwrite = TRUE, dir = td) # Começa o processo de criar um projeto de mapas no pacote rangeMapper
	global.bbox.save(con = diversitymap, bbox = shapes) # Função interna do rangeMapper para criar o canvas do mapa de riqueza de espécies 
	gridSize.save(diversitymap, gridSize= 0.1) # Função interna do rangeMapper para criar o grid do mapa de riqueza de espécies
	canvas.save(diversitymap) # Salva o canvas criado 
	processRanges(dir = shapes, con = diversitymap) # Cálculo da riqueza de espécies
	rangeMap.save(diversitymap) # Salva o mapa de riqueza de espécies internamente
	sr <- rangeMap.fetch(diversitymap) # Associa o mapa de riqueza de espécies a um objeto  
	 spplot(sr, "species_richness",main=list('Species Richness', cex=1.2), cuts = 10, par.settings = custom.theme(region = brewer.pal.get("OrRd")[1:9]), panel = function(...) {panel.levelplot(...)
sp.polygons(bioregions, fill = NA, col = "black", lwd = 0.5)}, scales = list(draw = TRUE))  # Plotea o mapa de riqueza de espécies. O argumento sp.polygons dentro da função spplot junta ou sobrepõe o mapa da riqueza das espécies com o primeiro mapa da regiões biogeograficas.  	
	}
}


PhyloDiver("regions.shp", 'shapes', "data.txt", "phylo.tre", model = "SYM")  ## With this provided data it takes ~2.5 minutes to run

Help da Função

PhyloDiver			Package: unknown			R Documentation



Function to create species richness maps and reconstructions of ancestral biogeographic regions.  



Description: 

The function will read four elements to generate a map of biogeographic regions and a second map showing species richness within those areas. It will also plot a phylogeny with maximum likelihood ancestral reconstruction of biogeographic regions represented by pie charts at each node, color-coded equally to the biogeographic regions map. The function needs four input files: 1) a shapefile that describes biogeographic regions; 2) a folder containing individual shapefiles that describe species distributions; 3) a table containing species main occurrence; and 4) an ultrametric phylogeny (object class phylo).



Usage:

PhyloDiver(bioregions, shapes, data, tree, model)



Arguments:

bioregions	Shapefile layer name, contains biogeographic regions of interest. Files in directory require extensions *.shp, *.shx and *.dbf, but only *.shp is put into the function (see example).

shapes		Folder or directory with shapefiles that describe species’ distribution range, each species should have its own shapefile. 

data		An object class data frame with two columns, the first column contains the list of species and the second column a categorical description of the biogeographic region of main occurrence for each species (no multistate descriptions are allowed).

tree		An object class tree describing phylogenetic relationship among species, required to be ultrametric.

model		A character that specifies the model used for the ancestral reconstruction (see Details).



Details:

The function requires the packages “sp”, “rgdal”, “mapdata”, “maptools”, “RSQLite”, “DBI”, “rangeMapper”, “RColorBrewer”, “lattice”, “latticeExtra”, “ape”, and “phytools”.

The species richness map is based on functions inside the package “rangeMapper”. 

The ancestral reconstruction calls the functions ace of the “ape” package. It is restricted to the use of maximum likelihood estimation of ancestral states and it allows the use of three different models of rate change between states. The three options are “ER” (equal-rates model), “SYM” (symmetrical model), and “ARD” (all-rates-different model). See references for more details. 



Values:

comp1: A color-coded map representing biogeographic regions saved as a separate pdf (“BiogeographicRegions.pdf”) directly to the working directory.
comp2: A species richness map within the provided biogeographic regions in the quartz graphical device. 
comp3: A plotted phylogeny with ancestral reconstruction represented by pie charts at each node, color-coded equally to the biogeographic regions map and saved as a separate pfd (“AncestralReconstruction.pdf”) directly to the working directory.  



Warning: 

It should be confirme that all packages are compatible and loaded correctly before executing this function. 



Author:

Natalia Aristizábal Uribe 
Contact Info: nati.aristizabal1@gmail.com



References:

BirdLife International and NatureServe (2013) Bird species distribution maps of the world. BirdLife International, Cambridge, UK and NatureServe, Arlington, USA.

Cunningham, C. W., Omland, K. E. and Oakley, T. H. (1998) Reconstructing ancestral character states: a critical reappraisal. Trends in Ecology & Evolution, 13, 361–366.

Pagel, M. (1994) Detecting correlated evolution on phylogenies: a general method for the comparative analysis of discrete characters. Proceedings of the Royal Society of London. Series B. Biological Sciences, 255, 37–45.

Paradis, E. (2012) Analysis of Phylogenetics and Evolution with R (Second Edition). New York: Springer.

Paradis, E., Claude, J. and Strimmer, K. (2004) APE: analyses of phylogenetics and evolution in R language. Bioinformatics, 20, 289–290.

Revell, L. J. (2012) phytools: An R package for phylogenetic comparative biology (and other things). Methods Ecol. Evol. 3, 217-223. doi:10.1111/j.2041-210X.2011.00169.x

Schluter, D., Price, T., Mooers, A. O. and Ludwig, D. (1997) Likelihood of ancestor states in adaptive radiation. Evolution, 51, 1699–1711.

Valcu, M., Dale, J. and Kempenaers, B. (2012) rangeMapper: A platform for the study of macroecology of life history traits. 21(9). (DOI: 10.1111/j.1466-8238.2011.00739.x)



Examples:

### PhyloDiver(“regions.shp”, ‘shapes’, “data.txt”, “phylo.tre”, model = c(“ER”, “SYM”, “ARD”)) 

Arquivos para Executar a Função

Pasta comprimida que contem o shape que descreve as regiões biogeográficas de interesse:

regions.zip

Pasta comprimida que contem todos os shapes das distribuições das espécies:

shapes.zip

Pasta comprimida que contem a árvore filogenética e a tabela com a região biogeagráfica das espécies:

data_tree.zip

05_curso_antigo/r2014/alunos/trabalho_final/nati.aristizabal1/start.txt · Última modificação: 2020/08/12 06:04 (edição externa)