====== MARCOS MARTINS ====== {{:bie5782:01_curso_atual:alunos:trabalho_final:marcos.martins.silva:maco2.jpg?200|}} **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. ===== Meus Exercícios ===== Página com os meus exercícios resolvidos: [[.:Exercícios]] ===== Proposta de Trabalho Final ===== ==== Plano A - Plantas Companheiras e Antagonistas ==== **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. ==== Plano B - Fronteira de Possibilidade de Produção ==== **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. ===== Página de Ajuda - Plano A ==== 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) ===== Código da Função - Plano A ==== #################### 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 - Plano A ==== Arquivo da função {{:bie5782:01_curso_atual:alunos:trabalho_final:marcos.martins.silva:consortia.r|}} Arquivo de exemplo de uso da função consortia {{:bie5782:01_curso_atual:alunos:trabalho_final:marcos.martins.silva:script_function_consortia.r|}} Marcos, suas propostas estão fora do padrão requisitado, e principalmente, a ausência do pseudocódigo ou uma descrição do que a função vai fazer não permite entender o como elas devem funcionar. Sua proposta B, principalmente, precisa ser mais elaborada. Por favor, formate as duas corretamente, e me envie um email para eu avaliar novamente [[vrios81@gmail.com|Vitor Rios]] --- //[[aleadalardo@gmail.com|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.