====== Lucas Arantes Camacho ====== {{:bie5782:01_curso_atual:alunos:trabalho_final:lucas.camacho:lattes.jpg?200|}} **Bacharel em Biologia e Mestrando em Ecologia pelo Instituto de Biociências da USP** Meus interesses de pesquisa são: * Coevolução * Interações Ecológicas (Mutualismos e Antagonismos) * Redes ecológicas Em meu mestrado, vou usar modelos matemáticos e redes empíricas de interações ecológicas para investigar o papel das forças de interações em diferentes dinâmicas coevolutivas. [[http://guimaraes.bio.br/people.html]] Link para exercícios realizados [[.:exec]] ---- ---- ---- ===== Trabalho Final ===== ==== Proposta I ==== **Contextualização** A disciplina Ecologia de Comunidades e Ecossistemas é oferecida para o curso de graduação em Biologia pelo Inst. de Biociências da USP, abordando padrões em larga escala como surgimento e manutenção da biodiverdade e macroevolução [1]. Na primeira aula da disciplina, os alunos são expostos ao modelo logístico de crescimento de populações (Figura abaixo), para observar como uma equação não-linear pode gerar dinâmicas populacionais complexas e até caóticas. {{ :bie5782:01_curso_atual:alunos:trabalho_final:lucas.camacho:primeira.png?200 |}} A equação nos diz o tamanho de uma população ''N'' no tempo ''t+1'' com uma certa taxa de crescimento intrínseca ''r'' e um tamanho populacional no tempo ''t''[2]. Aqui nós usamos a densidade populacional sendo uma proporção, fazendo com que o valor de ''k'' , a capacidade suporte, seja 1. Pensando que este é um modelo matemático, ele pode gerar resultados que não tem nenhum sentido biológico como por exemplo, um valor alto de ''r (>3.95)'' gera tamanho populacionais negativos. Matematicamente correto, porém biológicamente irreal. É interessante que os alunos comparem uma dinâmica da equação logística com a equação de crescimento exponencial, sendo esta a equação fundamental que deriva as outras. {{ :bie5782:01_curso_atual:alunos:trabalho_final:lucas.camacho:seg.png?200 |}} A aula em questão é composta por metade teórica e metade prática, sendo que na aula prática os alunos recebem um arquivo em formato excell (//.xlsx//) onde há duas abas, uma delas com um gráfico do tamanho da(s) população(ões) estudadas e outra com as células dos valores de tempo de simulação, ''N'' inicial e ''r'' de duas populações de interesse. O objetivo desta prática é entender como diferentes valores de ''N'' e ''r'' afetam a dinâmica populacional de uma ou duas populações quaisquer. Minha função tem como objetivo substituir o arquivo //.xlsx// usado na aula prática para uma função em R, realizando a mesma tarefa de simular dinâmica populacional de até duas populações e gerar um gráfico de população por tempo. Minha função vai permitir que a pessoa escolha qual dinâmica irá simular: //logística// ou //exponencial//, para que possa haver uma comparação entre as dinâmicas e gerar discussões. Obs: A prática em questão foi elaborada pelos docentes da disciplina. Os arquivos podem ser baixados nos linques abaixo * [[http://guimaraes.bio.br/Roteiro_aula_pratica_1.docx|roteiro]] * [[http://guimaraes.bio.br/Pratica01.xlsx|excell]] **Planejamento:** **Entrada:** ''simu_pop(eq, t, ni, nj, ri, rj)'' * ''eq'' = Modelo a ser simulado (character, ''exponencial''; ''logistico'') * ''t'' = número de passos de tempo da simulação (integer) * ''ni'' = densidade populacional inicial da espécie ''i'' (float, 0 < ''ni'' > 1) * ''nj'' = densidade populacional inicial da espécie ''j'' (float, 0 < ''nj'' > 1) * ''ri'' = taxa intrínseca de crescimento da espécie ''i'' (float, 1.1 < ''ri'' > 3.95) * ''rj'' = taxa intrínseca de crescimento da espécie ''j'' (float, 1.1 < ''rj'' > 3.95) **Conferindo argumentos** * ''eq'' só possui duas entradas possíveis (''exponencial''; ''logistico''), caso seja diferente, retorne erro * ''ni'' e ''nj'' devem ser valores entre 0 e 1, caso contrário, retorne erro * ''ri'' e ''rj'' devem ser valores entre 1.1 e 3.95, caso contrário, retorne erro **Saída** * Gráfico mostrando o caminho das densidades populacionais em função do tempo, separando as populações por cores diferentes. **Referências** 1. [[https://uspdigital.usp.br/jupiterweb/obterDisciplina?sgldis=BIE0214&nomdis=|Página da disciplina no sistema de graduação JúpiterWeb]]. Acessado em 02/05/2018. 2. Gotelli, N. (2008). A primer of ecology. Sinauer Associates is an imprint of Oxford University Press; 4th edition. Salve, Lucas! Excelente proposta! Vamos convencer os professores a virem todos para o lado [[https://en.wikipedia.org/wiki/Free_software_movement|livRe da foRça]]! Alguns comentários sobre a proposta: - Porque as taxas precisam ser entre 1.1 e 3.95? Isso tem um motivo teórico, ele pode estar na descrição da função ;-) - Na escolha dos argumentos, você precisa dizer qual número corresponde a "exponencial" ou "logística". Alternativamente, você pode usar a função **match.arg**... Por fim, preciso ser chato e dizer que sua proposta tem uma certa confusão entre processos de tempo contínuo (equação logística) e tempo discreto (mapa logístico). Mas como isso não está no escopo dessa disciplina, sua avaliação não vai depender disso. Oi Andre, muito obrigado pelo feedback. Vou fazer a função da Proposta I mesmo. Já adicionei o motivo dos valores de ''r'' serem limitados e coloquei que o argumento para o ''eq'' agora são caracteres ''logistic'' e ''exponential''. Também dei uma mudada no texto. Muito obrigado. Lucas Camacho ---- === Proposta II === **Contextualização** Os serviços de streaming de música tem se tornado cada vez mais comuns, disponibilizando uma "infinidade" de músicas dos mais diversos gêneros conhecidos. Com isso, surgiu o serviço de criação de playlists de música para determinados tipos de humor, que podem ser escolhidos pelo ouvinte. Porém, muitos destes serviços são pagos ou possuem playlists já prontas e com músicas, muitas vezes, desconhecidas pelo usuário. Dessa forma, seria interessante que houvesse um programa simples que receba suas listas de músicas classificadas de acordo com seu gosto e gere playlists de músicas que te direcionem para um determinado humor desejado. Considere o cenário hipotético: Digamos que você está no primeiro semestre da pós-graduação e você acaba de perceber que não rendeu muito em seu projeto, gerando a possibilidade de uma bronca do seu orientador **carioca**. Isso ocorreu pois você estava ocupado com disciplinas relacionadas a estatística e programação em R. Essa situação te leva a um sentimento de tristeza e frustação e tudo o que você quer é se sentir mais feliz e compreendido. A música pode te ajudar, ainda mais quando sua playlist apenas contém as suas próprias músicas e é ordenada de uma forma que no início acompanha seu humor atual e, aos poucos, te leva ao humor desejado, caso você queira mudar de humor. A função proposta vai ler uma lista de músicas do usuário com uma classificação numérica dada pelo próprio usuário. Com essa lista, a função retornará uma lista de músicas de tamanho escolhido pelo usuário, com músicas semelhantes ao humor de entrada e se o usuário desejar, músicas que passem do humor atual para um determinado humor desejado. Caso o usuário não queira mudar o seu humor, a função retorna uma playlist apenas com músicas que acompanham o humor de entrada. **Planejamento:** **Entrada:** ''get_playlist(list, n, he, hs)'' * ''list'' = lista de músicas já classificadas do usuário (list) * ''n'' = número de músicas (integer) * ''he'' = humor de entrada (string, ''alegre'', ''triste'', ''calmo'', ''ansioso'', ''focado'', ''relaxado'') * ''hs'' = humor de saída (''NULL'' por default ou string, ''alegre'', ''triste'', ''calmo'', ''ansioso'', ''focado'', ''relaxado'') **Conferindo argumentos** * ''list'' deve ser de classe ''list'' e deve ser semelhante ao exemplo abaixo, caso contrário, retorne erro. | ^ Alegre^ Triste^ Calmo ^Ansioso ^Focado ^Relaxado ^ ^ Música 1 | 1 | 0 |0 |0 |0 |1 | ^ Música 2 | 1 | 0 |0 |0 |0 |1 | ^ Música 3 | 0 | 1 |1 |0 |1 |0 | * ''n'' máximo é igual ao número total de músicas em ''list'', caso contrário, retorne erro * ''he'' deve pertencer a uma lista de humores disponíveis, caso contrário, retorne erro **Saída** * Lista de músicas de tamanho ''n'' determinado pelo usuário Essa proposta é muito bacana, mas está bastante crua. Ela tem a descrição de "o que" vai ser feito, mas se vc estiver pensando em fazer essa função, é importante detalhar mais o "como" vai ser feito. Sugiro fazer um pseudo-código pra estruturar as ideias. Abs! ---- === Versão Final - Função simu_pop() === Decidi seguir com a **Proposta I** do trabalho final, criando uma função que simula populações virtuais com base em dois modelos clássicos da ecologia: o modelo exponencial e o modelo logístico. Para essa função, basta escolher qual modelo você quer simular, o tempo da simulação e os parâmetros ''n'' e ''r'' das populações que você terá um gráfico com as simulações, atingindo enfim nosso objetivo de oferecer uma ferramenta alternativa para a primeira aula prática da disciplina. * Link para o código da função: [[.:simu_pop|simu_pop.R]] * Link para a página de ajuda da função: [[.:help|help.txt]] ---- ---- ---- **Contatos** **e-mail:** lucas.camacho@usp.br **skype:** lucas.arantes666