Traduções desta página:

Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2019:alunos:trabalho_final:brunosandy:start

Bruno Lenhaverde Sandy

bruno.jpg

Mestre em Ciências Biológicas pela USP com foco em monitoramento de longo prazo de costões rochosos. Doutorando do laboratório de Algas Marinhas “Édison José de Paula” (LAM) do Departamento de Botânica do Instituto de Biociências/USP. No doutorado o foco é a realização de series temporais referentes aos dados de monitoramento de longo prazo de costão rochoso em uma Unidade de Conservação (Parque Estadual da Ilha Anchieta) e observar o efeito no costão rochoso de variáveis ambientais relacionadas às mudanças climáticas globais.

Exercícios

exercicio_1_bruno_sandy.r

exercicios_notar_atrasados.r

exericios_aula_analise_exploratoria_de_dados.r

exercicios_aula_5_graficos.r

exercicio_aula7ab.r

exercicio_8.1_palmito_adulto_.txt

exercicio_9.2._wiki_bruno_sandy.txt

Trabalho Final

Propostas do Trabalho Final

Proposta (A): Planejamento de Coletas de Campo Costeiras e Marinha

Contextualização

Segundo dados publicados em Coutinho et al. 2016, o municipio de Ubatuba é o segundo municipio mais estududado em relação à ecologia marinha bentônica na costa de São Paulo, por isso, a função será específica para esta localidade. Em algumas áreas do conhecimento, como a ecologia bantônica, os dados de campo são coletados em ecossistemas costeiros, ou seja, aqueles que sofrem influência das marés e das ondas, como praias arenosas, costões rochosos, manguezais, marismas, entre outros. Quando se faz o planejamento da coleta de dados em campo em ecologia bentônica, é importante levar em conta os valores de maré mais próximos da maré-baixa do dia selecionado, ou seja, o nível de maré mais próxima do zero (0.0) para evitar possíveis acidentes aos pesquisadores e assim, realizar a coleta dos dados de forma mais segura possível (dentro das condições de cada localidade). Na região Sudeste do Brasil, a variação da maré dá-se em torno de 1,5 m. A partir deste contexto inicial, o onjetivo desta função é: Auxiliar os pesquisadores que trabalham no município de Ubatuba na escolha da melhor data(as) levando em conta a maré de cada dia para se realizar a amostragem em campo.

Estrutura da Função

Informações de Entrada

  • field.d ← (dia, mare, dias, intervalo, previsoes)
  • “dia” = é um valor *numeric* relacionado ao primeiro dia que o usuário pretende ir coletar. Formato (%d/%m/%y).
  • “mare” = é um valor *numeric* relacionado ao nível máximo de maré selecionado pelo usuário. Valor de maré entre 0.0 e 0.3 definido pelo usuário.
  • “dias” = é um valor *numéric* relacionado à quantidade de dias desejado para a coleta do usuário. Aqui é o período de dias em que o usuário irá coletar. A coleta durará x dias?
  • “intervalo” = (True or False) Informa ao usuário se o intervalo de dias escolhido pelo usuário deve ser sequencial (True) ou não/dias alternados (False). Aqui o usuário vai inserir se quer um período sequencial de datas ou não.
  • “previsoes” = é um data.table em formato .csv que contem as previsões de maré extraídas pela tábua de maré fornecida pela Marinha do Brasil para o ano vigente (2019). Aqui é a base de dados onde será fornecido ao usuário os dados de maré e o seu respectivo dia.

Checagem dos Parâmetros Selecionados

  • 1) “dia” é um vetor *data* contendo contendo o dia > 0 e ≤ 31 e, o mês > 0 e ≤ 12 Se não for, volte a mensagem: “Esta não é uma data valida. O valor dia precisa ser > 0 e ≤ 31 e valor mês precisa ser entre > 0 e ≤ 12”
  • 2) “mare” é um valor numeric estando no intervalo entre 0.0 e 0.3. Se não for, volte a mensagem: “Esta não é uma maré valida. O valor mare precisa estar entre 0.0 e 0.3”
  • 3) “dias” é um valor >0 e ≤ 31. Aqui é: Quantos dias você quer para coletar? Se não for, volte a mensagem: “Este dias não são válidos, favor inserir valor entre > 0 e ≤ 31”
  • 4) “intervalo” é um valor lógico True ou False
    1. True = se as datas válidas pelo usuário, ou seja, a sequencia de datas com marés baixa for sequencial
    2. False = se as datas definidas pelo usuário não for sequencial, ou seja, se dentro destas datas, uma delas não conter maré-baixa.
  • 5) “previsoes” é um data.table contendo as colunas: dia, mês, ano e maré em formato .csv do ano vigente sendo fornecido ao usuário.

Pseudo-codigo

  • 1) Verificar quais argumentos da função que foram recebidos e validar o tipo de cada um deles;
  • 2) Carregar o data.table de previsões;
  • 3) Criar variável controle_dias (inicialmente com valor zero);
  • 4) Criar variável controle_data (inicialmente com a data informada no argumento “data”);
  • 5) Criar variável retorno (uma lista que retornará os dias selecionados);
  • 6) Se a variável controle_dias for menor que o argumento “dias”, faça:
    1. Verificar em “previsoes” se a data de controle_data apresenta a maré adequada;
    2. Se sim:
      1. Salvar em data de controle_data na lista retorno;
      2. Incrementar a variavel controle_dias;
    3. Se não:
      1. Verificar se a variável controle_dias é > 0 e se intervalo é True.
    4. Caso sim em ambos:
      1. Atribui o valor 0 para controle_dias;
      2. Apaga o conteúdo de retorno;
  • 7) Se a variável controle_dias for igual ao valor do argumento “dias”, significa que todas as datas já foram encontradas e então a função é finalizada retornando a lista de todos os dias selecionados, que estão na varável retorno.

Informações de Saída * Uma lista contendo a quantidade de dias solicitados que estão de acordo com a maré informada;

Taio

Olá, Bruno!

Cara, eu achei as suas duas propostas um pouco confusas. Do ponto de vista do código, as duas propostas são bem parecidas. No entanto, sugiro que você siga com a proposta A pq ela me parece um pouco menos confusa e parece que você gostou mais dela.

Lá vai alguns comentários:

  • Contextualização. Parece que todas as coletas de dados do Brasil e do mundo precisam levar em conta maré e clima. Você usa as palavras “otimizar” e “eficiente” mas não esta claro a utilidade da sua função. Além disso, não esta claro quais as variáveis de “maré” e “clima” a sua função utiliza. Escreva a sua proposta para uma pessoa que não tenha ideia de qual seja a sua área de trabalho.
  • Informações de Entrada. Não esta claro o que é o argumento “period”.
  • Informações de Entrada. No argumento “forecast” o que são previsões? Previsões de luminosidade? Pluviosidade? Temperatura? O que vai nas linhas e colunas desse data.table?
  • Pseudo-codigo Me parece que a sua função apenas compara valores numéricos com uma lista. Utilizar a sua função tem que ser mais vantajoso do que simplesmente conferir uma lista manualmente. Detalhe mais os cálculos e o passo a passo do código.
  • Inspire - se em como a Carol constrói a proposta dela. http://ecologia.ib.usp.br/bie5782/doku.phpid=bie5782:05_curso_antigo:r2017:alunos:trabalho_final:carol.mendonca.bio:start. Ela deixa bem claro as premissas e cálculos. Tente fazer o mesmo exercício. Tenho certeza que irá te ajudar a ter mais clareza da sua proposta, pensar em como deixá -la mais geral e construir uma bela de uma função. Explicitar as premissas deixa a vida muito mais fácil!
  • Reveja a página http://ecologia.ib.usp.br/bie5782/doku.php?id=bie5782:01_curso_atual:alunos:trabalho_final:start. Veja que umas das principais ideias é que sua função seja uma tarefa geral ou aplicável recorrentemente e que seja uma tarefa factível, mas que ao mesmo tempo seja um desafio estimulante e que te tire da zona de conforto! .
  • Respira!

Bom tRabalho ;-)

Lucas F. Nascimento (Taio)

Alexandre Adalardo de Oliveira 2019/06/19 09:29

Concordo com o Taio que está um pouco difícil de entender como o procedimento da função ocorrerá e que as explicações não permitem uma avaliação da complexidade do código que será gerado. Atente-se para as sugestões dele, inclusive, de basear seu psedo-código no exemplo da Carol Mendonça Por exemplo, a questão da maré está relacionada a um base de dados (forecast) que não fica claro como será incluída na função (de onde vem e qual a sua estrutura). A estrutura de um objeto de lista para armazenar a data de início não parece adequada, uma data de inicio da coleta pode ser simplesmente um vetor com uma posição com uma estrutura (“dia/mes/ano”), que depois é transformado em formato de data dentro da função. Uma coisa que fica dificil avaliar é a pcomplexidade da tarefa. Pelo que pude entender, a proposta A pode ser resumida na definição se a partir da data solicitada quais dias tem ou não uma maré máxima adequada, ou seja, se na base de dados (forecast) como coloca há uma variavel de maré máxima associada a outra com a data, a tarefa é meramente fazer a indexação dessa informação com o intervalo de data solicitada e um teste lógico para saber quais dias nesse intervalo a maré máxima é menor que o limite solicitado. Entretanto, se define, como coloca, que os dias devem ou não ser sequenciais, a complexidade aumenta um pouco e passa a ser um desafio mais interessante. Entretanto, seu pseudo-código não contempla essa parte, que aparece como argumento.

Sugestão: descreva todos os passos da proposta A no pseudo código, como se fosse cada uma das linhas de código, incluíndo a criação dos objetos internos da função, a manipulação dos dado que entraram (por exemplo, a coreção de dados em um formato de caracteres para data), os teste lógicos e controles de fluxo. Ou seja, basicamente descreva todos os procedimentos dentro da funcão. Além disso, inclua um exemplo claro de como será esse dado forecast, qual a fonte da informação e como o usuário deverá entrar essa informação. Faça que a função leia um arquivo no formato padrão da de exportação da base de dados original. Por exemplo, um .csv separado por “,”, ou seja, o formato padrão exportado do banco de dados de maré. Uma outra coisa que sentí falta na proposta foi a localidade, deixe claro como será tratada, por exemplo, se o usuário deve entrar apenas o dado da localidade desejada. Faça essas modificações o quanto antes para podermos fechar a proposta e começar a trabalhar no código propriamente dito. Lembre-se que um pseudo-codigo bem descrito e detalhado, irá ajudá-lo muito na execução. Portanto, não será um tempo desperdiçado.

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