Índice
O Curso
Material de Apoio
Área dos Alunos
Visitantes
Forum
notaR
Área Restrita
Cursos Anteriores
IBUSP
Outras Insitutições
IBUSP
Outras Insitutições
Mestrando em Ecologia, Instituto de Biociências, USP.
Meu interesse principal está na interface das áreas de Ecologia e Evolução, e busco compreender como interações endossimbióticas estão em “corda-bamba”, ora desenvolvendo conflito, ora cooperação.
O título da minha dissertação é: “Prevalência da bactéria endossimbionte Wolbachia em assembléias de drosofilídeos neotropicais”, orientado pelo Prof. Dr. Rodrigo Cogni.
Página com os meus exercícios resolvidos: Exercícios
Contextualização
Cultivares apresentam crescimento e desempenho diferenciado quando cultivados com outros tipos de plantas capazes de interagir com elas. Na produção orgânica, um dos objetivos é maximizar a proximidade do cultivo de plantas capazes de trazer benefício para uma planta de interesse, seja pelo favorecimento ao crescimento, seja pelo repelimento de pragas; e, tentar reduzir a proximidade de plantas que podem interagir antagonisticamente. Dessa forma, faz necessário reconhecer a época do cultivo de cada planta e tentar associar a ela, plantas companheiras de mesmo período.
Descrição
A função irá ler uma matriz de correlação de benefício entre plantas, em que as linhas representam as plantas de interesse (cultivares) e as colunas as plantas com associação. Para cada linha é apresentado o valor da benefício que cada planta da coluna trás para esse planta, sendo que 1 apresenta a maior benefício, 0 neutralidade na associação e -1 o pior benefício (a interação é antagonística). Dois vetores de datas apresentando, respectivamente, o início e o fim do período de plantio dispostos na ordem dos objetos das linhas da matriz, serão lidos para encontrar o intervalo do período de plantio. Para cada cultivar a função encontra o intersecto de intervalo de plantio com as associações. A razão entre essa intersecção e o intervalo do cultivar de interesse da um valor de 0 a 1. A função constrói uma matriz com essas razões e ela é multiplicada pela matriz de associação de entrada na função. A função retorna essa matriz ou, se informado um cultivar de interesse (target), retorna as cinco melhores e as cinco piores associações a esse cultivar de interesse, mostrando o intervalo de plantio e os valores da associação de forma gráfica.
Contextualização
Um dos princípios mais básicos em Economia é que os recursos são escassos, e que existem trade-offs na produção de um bem em detrimento de outro. Para examinar esses trade-offs, os economistas muitas vezes usam o modelo conhecido como fronteira de possibilidade de produção. Nela simplificamos a nossa compreensão dos trade-offs ao considerar uma economia de apenas dois bens. Em Ecologia, esse mesmo princípio pode ser aplicado para o uso de dois recursos por um organismo, em que a escolha e obtenção de um recurso implica na não obtenção do outro.
Seguindo a proposta de trabalho com o Plano A - Plantas Companheiras e Antagonistas
consortia package:nenhum R Documentation Uma função que encontra as cinco melhores e as cinco piores associações para um cultivar de interesse dada a associação e maior intervalo em que essas plantas podem ser cultivadas juntas no campo. Se não especificado, a função retorna a matriz final de associação com peso pelo período de plantio conjunto. Usage consortia(target, data, start, end) Arguments target = um cultivar de interesse, que é um objeto das linhas (rownames) dentro da matriz de associação (data). data = Uma matriz com as linhas sendo os elementos de interesse e as colunas os elementos que irão interagir (associação). start = Vetor de datas de início de plantio. Deve possuir a mesma ordem dos objetos (rownames) da matriz (data). end = Vetor de datas do final de plantio. Deve possuir a mesma ordem dos objetos (rownames) da matriz (data). Value Para cada cultivar a função encontra o intersecto de intervalo de plantio com as associações. A razão entre essa intersecção e o intervalo do cultivar de interesse da um valor de 0 a 1. A função constrói uma matriz com essas razões e ela é multiplicada pela matriz de associação de entrada na função. Se não especificado o target da função, ela retorna por default a matriz resultante dessa multiplicação. Se especificado, a função retorna uma lista contendo dois data frame com cinco melhores e as cinco piores associações, mostrando o intervalo de plantio que elas podem ser cultivadas juntas e graficamente mostrando o valor das associações. Author Marcos Aurélio Martins Oliveira da Silva Examples No final da pagina do Wiki há um arquivo (script_function_consortia.r) que consiste na matriz e nos vetores de entrada na função. Lá os exemplos abaixo já estão inseridos no arquivo. consortia(target = "alface", data=matq, start=datas.inicio, end=datas.fim) consortia(target = "beterraba",data=matq, start=datas.inicio, end=datas.fim) consortia(data=matq, start=datas.inicio, end=datas.fim)
#################### CONSORTIA FUNCTION #################### consortia <- function(target = "final.matrix", data, start, end){ #################### IMPORTANDO PACOTES ##################### library(lubridate) library(lattice) #################### VETOR DE DATAS #################### period <- data.frame(as.character(start),as.character(end)) #cria um data frame com os vetores de datas colnames(period) <- c("start", "end") # nomeia início e fim do período de plantio rownames(period) <- rownames(data) # da o mesmo nome das linhas do data (uma matriz) para as linhas do data frame de periodo period[,1] <- as.Date.character(period[,1]) #Vetor de datas do início do plantio period[,2] <- as.Date.character(period[,2]) #Vetor de datas do final do plantio diff <- period$end - period$start # diferença entre os vetores de inicio e fim de plantio period$interval <- as.interval(x = diff, start = period$start) # intervalo da classe lubridate entre inicio e fim if (length(start) == length(end)){ ratio.date = matrix(NA, nrow = length(start), ncol = length(start)) intersect.interval = matrix(NA, nrow = length(start), ncol = length(start)) rownames(intersect.interval) <- rownames(data) colnames(intersect.interval) <- rownames(data) }else{ print("Os vetores de datas NÃO são compatíveis") } for (j in 1:length(start)) { nomin = period$interval[j] x = as.numeric(nomin) for (i in 1:length(start)) { associate = intersect(nomin, period$interval[i]) intersect.interval[i,j] <- as.character(associate) y = as.numeric(associate) ratio.date[i,j] = y/x } } final.matrix <- data*ratio.date fmatrix <- final.matrix #################### TARGET COMO DEFAULT - MATRIZ COMPLETA #################### if(target == "final.matrix"){ resultado <- t(final.matrix) }else{ #################### TARGET COMO CULTIVAR ESCOLHIDO #################### # Encontrando as 5 melhores associações para o cultivar escolhido cons <- fmatrix[, target] cons.rank <- rank(x = cons, na.last = NA, ties.method = "first") best.consortia <- cons[names(cons.rank[cons.rank >= length(cons.rank) - 4])] dates.best.consortia <- intersect.interval[names(best.consortia),target] # Encontrando as 5 piores associações para o cultivar escolhido conf <- fmatrix[, target] conf.rank <- rank(x = conf, na.last = NA, ties.method = "first") worst.consortia <- conf[names(conf.rank[conf.rank <= 5])] dates.worst.consortia <- intersect.interval[names(worst.consortia),target] #################### RESUMO E APRESENTAÇÃO GRÁFICA#################### rgb.palette <- colorRampPalette(c("orchid4","white", "lightseagreen"), space = "rgb") bassoc <- rbind(best.consortia,rep(0,5)) plot1 <- levelplot(bassoc, par.settings = list(axis.line = list(col = "transparent"), xaxt = "n"), scales = list(x = list(labels = NULL), tck = c(0,0)), main="",xlab="Companheiras", ylab="", col.regions=rgb.palette(200), cuts=0, at=seq(-1,1,0.05)) wassoc <- rbind(rep(0,5), worst.consortia) plot2 <- levelplot(wassoc, par.settings = list(axis.line = list(col = "transparent")), scales = list(x = list(labels = NULL), y = list(alternating = 2), tck = c(0,0)), colorkey = FALSE, main="",xlab="Antagonistas", ylab= "", col.regions=rgb.palette(200), cuts=0, at=seq(-1,1,0.05)) best.consortia.df <- cbind(best.consortia, as.character(dates.best.consortia)) colnames(best.consortia.df) <- c("Companheiras", "Plantio Conjunto no Campo") worst.consortia.df <- cbind(worst.consortia,dates.worst.consortia) colnames(worst.consortia.df) <- c("Antagonicas", "Plantio Conjunto no Campo") title <- cat("\n\n\n\t ***Companheiras e Antagônicas*** \n\n\t") subtitle <- cat("\n\t Os melhores e piores cultivares para se plantar com", target, "são:\n") con <- list(title, subtitle, best.consortia.df, worst.consortia.df) resultado = con list(print(plot1, position = c(0.0, 0, 0.65, 1), more = TRUE), print(plot2, position = c(0.45, 0, 1, 1))) } return(resultado) }
Arquivo da função
Arquivo de exemplo de uso da função consortia
Vitor Rios
— Alexandre Adalardo de Oliveira 2018/05/17 17:07 Caro Marcos, realmente a falta de um pseudocódigo dificulta o entendimento do que a função fará e a dificuldade de implementação de código associada. Sugiro fortemente que comece por isso. Poste aqui para podermos avaliar, vai ajudar o desenvolvimento da função. Há necessidade tb de esclarecer melhor a terminologia utilizada. A descrição que faz dos argumentos não facilita tb o entendimento. Por exemplo, o que são “elementos de interesse”… eu conversei contigo pessoalmente e por isso estou entendendo melhor. Aguardamos o seu retorno, principalmente com relação ao pseudocódigo da proposta A, que me parece mais promissora.