\documentclass[a4paper, oneside, 10pt]{article}
\usepackage[unicode]{hyperref}
\usepackage[utf8x]{inputenc}
\usepackage[english]{babel}
\usepackage{graphicx}
\graphicspath{{media/}}
\date{\today}
\title{}
\author{}
\begin{document}



\section{\texorpdfstring{Mariana Santos Lobato Martins}{Mariana Santos Lobato Martins}}
\label{sec:mariana_santos_lobato_martins}


\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/01_curso_atual/alunos/trabalho_final/mariana.santos.martins/imagem_cortada}


Sou formada em Oceanologia pela Universidade Federal de Rio Grande-FURG. Atualmente sou mestranda em Oceanografia, com ênfase em Oceanografia Biológica, pelo Instituto Oceanográfico da USP. 

Minha dissertação não prevê a utilização do R para a análise de dados, visto que estou trabalhando com a área social da Oceanografia e metodologias qualitativas. Mas sempre gostei de estatística e do ambiente R, além de acreditar na importância deste como ambiente de trabalho livre e colaborativo, por isso estou fazendo a disciplina. 

\textbf{EXERCÍCIOS}

\href{http://ecor.ib.usp.br/doku.php?id=05_curso_antigo:r2019:alunos:trabalho_final:mariana.santos.martins:exec}{.:exec}

\begin{center}
\line(1,0){250}
\end{center}



\textbf{TRABALHO FINAL}

1. \textbf{Proposta principal:}

No Brasil, de acordo com o Censo Demográfico de 2010, a zona costeira concentra 26,58\% da população (IBGE, 2011). Considerando que muitas das grandes cidades se localizam nas zonas costeiras, é de grande importância para a gestão que se conheça o ambiente da praia e suas características. Nesse sentido, usuários, poder público, gestores, oficiais da defesa civil e do resgaste necessitam de meios rápidos e eficientes para monitorar o estado do mar a fim de: minimizar possíveis efeitos das ressacas conhecendo a altura de onda incidentes; entender o estágio morfodinâmico da praia que irá influenciar na morfologia (forma da praia), por exemplo: se a praia é de tombo (alta declividade) ou suave (figura 1 a), o que altera as chances de afogamento de pessoas que não são boas nadadoras; bem como prever a possibilidade das correntes de retorno. As correntes de retorno são canais de correntes que puxam os nadadores em direção ao mar aberto, muitas vezes provocando casos de afogamento (figura 1 b). Elas se formam de várias formas, podendo ser causadas por alterações rápidas na altura de ondas, como pela chegada de um swell (grandes ondas formadas em áreas remotas com ocorrência de tempestades) ou pontos de ruptura nos bancos de areia, relacionado ao estágio morfodinâmico da praia.

\includegraphics[keepaspectratio=true,width=0.8\textwidth]{bie5782/01_curso_atual/alunos/trabalho_final/mariana.santos.martins/imagem_funcao_1}


Para facilitar aos leigos na área de oceanografia a obterem de forma rápida informações sobre o estado do mar e monitorar o mesmo num período de 7 dias, será construída a função \texttt{monitoraR}. Está irá utilizar dados de saída do modelo WaveWatch, baixados no R, das variáveis altura de onda em águas profundas e período da onda de forma a calcular a altura de onda na praia (equação 1), a importância da maré no sistema da praia (equação 2) e o estado morfodinâmico da praia (equação 3). Dessa forma, a função irá fornecer informações de previsão da altura da onda na praia, seu período, o estado morfodinâmico e o risco de correntes de retorno associadas para cada dia. 

Hrasa = (g * Hprofundo) \textasciicircum{} 0.5 				(Equação 1)

RTR = TR / Hraso					(Equação 2)

Ω = Hraso / Ws. T					(Equação 3)

Onde: Hrasa é altura de onda em águas rasas, g é a aceleração da gravidade, TR é a amplitude de maré, RTR é Related Tide Range, Ω é o estado morfodinâmico da praia, Ws é a velocidade de decaimento do grão de areia, T é o período da onda. 

\textbf{Planejamento da função}

Entrada: \texttt{monitoraR} (\texttt{lat}, \texttt{long}, \texttt{dia.inicio}, \texttt{dia.final}, \texttt{estado.BR}, \texttt{grão.carac}, \texttt{ripcurrent = T} )
\begin{itemize}
  \item \texttt{lat} = latitude da praia a ser investigada (classe: numeric).
  \item \texttt{long} = longitude da praia a ser investigada (classe: numeric).
  \item \texttt{dia.inicio} = data do dia de ínicio da previsão no formato YYYY-MM-DD (classe: data).
  \item \texttt{dia.final} = data do dia de final da previsão no formato YYYY-MM-DD (classe: data).
  \item \texttt{Estado.BR} = estado do BR a ser escolhido pelo usuário, dentre as opções estão as siglas dos estados costeiros (classe: character)
  \item \texttt{grão.carac} = característica do grão a ser escolhida pelo usuário, dentre as opções “AGrossa”, “AMedia”, “AFina”, “AMuitoFina”
  \item \texttt{ripcurrent} = se o usuário quer ou não calcular o indice de risco de corrente de retorno
\end{itemize}


\textbf{Verificando os parâmetros:}
\begin{itemize}
  \item \texttt{lat} é um número entre 3 N e 33 S? Caso não seja, para-se o processamento da função: “\texttt{lat} precisa ser um número entre 3 N e 33S.”
  \item \texttt{long} é um número e menor que 0? Se não, escreve: “\texttt{long} precisa ser um número e \textless  0.”
  \item Diferença entre o dia de ínicio e de final da previsão é de 7 dias? Caso negativo, escreve: “\texttt{dia.inicio} e \texttt{dia.final} devem ter intervalo de 7 dias.”
  \item \texttt{estado.BR} é da classe caracter? Se não, escreve: “\texttt{estado.BR} deve ser caracter.”
  \item \texttt{grão.carac} é da classe caracter? Se não, escreve: “\texttt{estado.BR} deve ser caracter.”
\end{itemize}


 \textbf{Pseudo-código:}
\begin{enumerate}
  \item  Faz um download de dataframe, salva no objeto \texttt{Ondas}, do site WaveWatch, entre a latitude (\texttt{lat}), longitude(\texttt{long}) e no intervalo de datas (\texttt{dia.inicio} até \texttt{dia.final}) escolhidos pelo usuário, das variáveis altura de onda (\texttt{Hprof}), período de onda (\texttt{T});
  \item  Cria uma nova coluna no dataframe \texttt{Ondas} (\texttt{Ondas\$Hrasa}) onde é convertida a altura de onda do WaveWatch para a altura de onda em águas rasas - equação 1
  \item Cria objeto \texttt{dif.datas} para armazenar quantos dias de diferença entre o início e o fim do usuário escolheu
  \item Cria um dataframe (\texttt{Grao})para armazenar relação entre característica do grão e a velocidade média de decantação da classe – na primeira coluna as opções de características do grão (\texttt{Grao\$nomes}) e na segunda as velocidades médias (\texttt{Grao\$Ws})
  \item Cria um dataframe (\texttt{MareBR}) para armazenar a relação entre a amplitude média de maré em cada estado do Brasil – na primeira coluna a sigla dos estados costeiros brasileiros (\texttt{MareBR\$nome}) e na segunda a amplitude de maré (\texttt{MareBR\$TR}), conforme livro Brazilian Coastal Systems 
  \item Cria um dataframe \texttt{Estágio.praial} que armazena as informações que relacionam \texttt{RTR}, \texttt{K}, \texttt{Hraso} e o nome do estágio praial (colocar link da figura da tabela 1.1 do livro Brazilian Beach Systems)
  \item Cria objeto chamado \texttt{RTR} para armazenar o RTR, calulado através da indexação no dataframe \texttt{MareBR} que retorne o valor da segunda coluna que corresponda a sigla informada pelo usuário (armazenada na primeira coluna) e a média da coluna \texttt{Ondas\$Hrasa} do dataframe Ondas - equação 2
  \item Controle de fluxo da função: se \texttt{RTR \textgreater  10} a função para e retorna a mensagem “Praia dominada por maré, não é possível calcular Ω”
  \item Cálculo do estágio praial por dia -equação 3:
\end{enumerate}

\begin{itemize}
  \item Cria vetores \texttt{Hraso.m.dia}, \texttt{T.m.dia}, \texttt{omega} e \texttt{nome.estágio} de NAs de tamanho \texttt{dif.datas};
  \item Entra em um ciclo for em que \texttt{i} vai de 1 até \texttt{dif.datas}; 
  \item Entra em um ciclo for em que \texttt{j} vai de 1 até \texttt{dif.datas}; 
  \item Cria vetor \texttt{Hraso.m.dia} que armazena a média de \texttt{Ondas\$Hraso} por dia (cada 24 linhas de dados no dataframe Ondas correspondem aos dados de 1 dia) indexação será feita usando esse princípio – indo da linhas (\texttt{(j*24) - 23) : j*24})
  \item Cria objeto \texttt{T.m.dia} que armazena a média de\texttt{ Ondas\$T} por dia (cada 24 linhas de dados no dataframe Ondas correspondem aos dados de 1 dia) indexação será feita usando esse princípio, - indo da linhas (\texttt{(j*24) - 23) : (j*24)})
  \item Calcula para cada posição do vetor \texttt{omega} o estágio praial do dia: 
  \item Guarda no vetor \texttt{nome.estágio} o nome do estágio praial a cada dia a partir de indexação dos valores de \texttt{RTR} e \texttt{Ω} e \texttt{Hraso} que estão no dataframe \texttt{Estagio.praial} 
\end{itemize}

\begin{enumerate}
  \item Controle de fluxo: if ripcurrent == T 

  \begin{itemize}
    \item Criar o vetor \texttt{ripcurrent} de NAs e tamanho \texttt{dif.datas}
    \item Calcular o índice de risco de correntes de retorno utilizando as variáveis \texttt{Hraso},\texttt{ T} e \texttt{TR} - baseado no índice descrito em Engle et al. (2002)
  \end{itemize}
  \item Plot em que no eixo Y estejam \texttt{Ω} e \texttt{ripcurrent} em função de \texttt{dif.datas}
\end{enumerate}


\textbf{Saída:}
\begin{itemize}
  \item Lista contendo: Hraso.m.dia, T.m.dia, Ω, nome.estágio, risco corrente de retorno
  \item Plot do valor de Ω e do risco de corrente de retorno para os dias do intervalo amostral escolhido pelo usuário.
\end{itemize}
 Comentários Lucas Camacho
Oi Mariana, tudo bem?

Essa parece ser uma função que está bem estruturada pra você e aplica alguns cálculos da oceanografia (se não for da oceanografia peço desculpas pela ignorância) para devolver algumas informações para o usuário. Porém, tenho algumas perguntas que podem te fazer pensar e te ajudar no ,,polimento" da função
\begin{itemize}
  \item O que acontece se eu for rodar a função e colocar, por exemplo, 3J e 28K no argumento da latitude? Retorna algum erro?
  \item A latitude tem um valor mínimo e máximo correto? E a longitude só precisa ser um número negativo. Poderia ser -4.2000 por exemplo?
  \item \texttt{estado.BR} só precisa ser um character. O que acontece se eu escrever \texttt{estado.BR = ARIZONA}? A pessoa escreveu um character e vai rolar algum erro no meio da função sendo que a pessoa usando não vai ter a mínimo ideia do motivo
  \item Meio parecido com a pergunta anterior, e se eu colocar um caracter escrito \texttt{grao.caract = MAISOUMENOSDURO}? Exemplo idiota, mas acho que você pegou a ideia.
\end{itemize}


Por fim, achei a ideia da função legal e parece bem organizado já.

\begin{center}
\line(1,0){250}
\end{center}



2. \textbf{Proposta B}

Dentro da área da oceanografia, grandes partes das pesquisas realizadas necessitam de trabalhos em campo, às vezes de vários dias para serem executados, ou próximo ou na praia e até mesmo em alto mar. Por depender de condições climáticas muito variadas e dinâmicas e, ainda por cima, questões logísticas, é de grande importância que seja realizado uma boa análise do tempo nos períodos propostos para que o campo ocorra em situação de segurança para a equipe, que seja possível realizar a coleta dos dados e de forma a maximizar a obtenção dos dados em campo utilizando recurso público para a pesquisa. 

Trabalhos embarcados utilizando Navios Oceanográficos, tripulação, equipe de pesquisadores custa em média: xxxxxxxxx reais por dia, sem contar os diversos equipamentos que devem ser acoplados para que sejam coletados os dados. Além de conseguir coletar dados em segurança, qualquer pesquisador que queira trabalhar no mar precisa se preocupar com a possibilidade da perda de equipamentos de custo elevado por conta de condições de tempo, sendo mais um fator relevante para ser levado em consideração no momento do planejamento. Mesmo os trabalhos que não são embarcados, necessitam de boas condições de tempo para serem executados. No caso de trabalhos que envolvam pescadores precisamos: quando embarcados junto com eles (observadores de bordo) que o tempo seja bom para a segurança de todos, quando realizadas entrevistas em terra é preciso que o pescador não tenho saído para realizar a atividade. Logo, para quase todos os projetos de pesquisa em ciências do mar é essencial que se considere as condições de tempo, em especial altura de onda, velocidade do vento, precipitação, etc. Fatores como a lua podem vir a ser importantes para a coleta de alguns organismos marinhos que tem ciclos, em geral, reprodutivos acoplados à fase da lua, bem como é de grande importância para aqueles que trabalham com pesca. O mesmo para os defesos de captura de espécies, que pode vir a ser de interesse de pesquisadores.

\textbf{Planejamento da função}

Entrada:  \texttt{campo.maR} (\texttt{previsao, dia.inicio, dia.final, mes, wlim, hlim, prob.chuva, fase.lua, recurso)}
\begin{itemize}
  \item \texttt{previsao} = data frame contendo os dados de previsão de 7 dias das variáveis de altura (m) e período de onda (s), probabilidade de chuva (\%), intensidade de vento (m/s), temperatura do ar (C).
\end{itemize}

\begin{itemize}
  \item \texttt{dia.incio} e \texttt{dia.final} = números entre 1 e 31, referente aos dias dos mês (classe: numeric
\end{itemize}

\begin{itemize}
  \item \texttt{mes} = mês escolhido pelo usuário (classe: character)
\end{itemize}

\begin{itemize}
  \item \texttt{wlim} = limite de intensidade do vento em m/s (classe: numeric, wlim \textgreater  0).
\end{itemize}

\begin{itemize}
  \item \texttt{hlim} = limite de altura de onda em metros (classe: numeric, hlim \textgreater  0)
\end{itemize}

\begin{itemize}
  \item \texttt{prob.chuva} = limite de probabilidade de chuva 
\end{itemize}

\begin{itemize}
  \item \texttt{fase.lua} = fases da lua escolhidos pelo usuário, caso não deseje levar em consideração, fase.lua = FALSE (classe: character)
\end{itemize}

\begin{itemize}
  \item \texttt{recurso} = espécie que o usuário vai escolher, caso não venha trabalhar com a pesca colocar recurso = FALSE, dentre as opções dadas na descrição da função
\end{itemize}


\textbf{Verificando os parâmetros:}
\begin{itemize}
  \item \texttt{previsao} é um dataframe contendo 5 colunas? Caso não seja, para-se o processamento da função: “\texttt{previsao} precisa ser um dataframe com 5 colunas de dados.”
\end{itemize}

\begin{itemize}
  \item \texttt{dia.incio} e \texttt{dia.final} são números entre 1 e 31? Se não, mensagem de erro e para-se a função “\texttt{dia.incio} e \texttt{dia.final} devem ser números entre 1 e 31”
\end{itemize}

\begin{itemize}
  \item  Verificar se \texttt{previsão} tem o mesmo número de linhas do intervalo entre \texttt{dia.incio} e \texttt{dia.final}
\end{itemize}

\begin{itemize}
  \item \texttt{Wlim, temp.lim, hlim} são números maiores que zero? Se não, escreve: “\texttt{wlim, temp.lim, hlim} precisam ser números maiores que 0.”
\end{itemize}

\begin{itemize}
  \item \texttt{fase.lua} e \texttt{mes} são da classe caracter? Se não, para a função “\texttt{fase.lua} e \texttt{mes} devem ser da classe character”
\end{itemize}

\begin{itemize}
  \item  \texttt{recurso} é da classe caracter? Se não, escreve: “\texttt{recurso} deve ser da classe caracter.”
\end{itemize}


\textbf{Pseudo-código:}

 -Cria um data frame \texttt{calendario} com as seguintes colunas: dias do ano (seq(1:365)), meses do ano (rep (nome de cada mes), duração do mês), fases da lua ( rep (cada fase da lua), 7) e uma coluna para cada recurso e seu período de defeso no estado de SP (defeso = não poder pescar = False);
\begin{enumerate}
  \item Com base no argumento \texttt{mes, dia.incio e dia.final} - indexa o dataframe \texttt{calendário} retornando apenas as informações referentes àquele mês e no período de dias escolhidos, guardando no objeto \texttt{período.campo}
  \item Cria \texttt{dados.periodo.campo} que é formado pela junção dos dataframes \texttt{período.campo} e \texttt{previsão}, formado por 9 colunas
  \item A partir do dataframe \texttt{dados.periodo.campo} usando \texttt{if} vamos selecionar os dias com valores acima dos valores limites fornecidos pelo usuário para \texttt{wlim, temp.lim, hlim e prob.chuva}, criando outra coluna em \texttt{dados.periodo.campo} chamada \texttt{Tempo} e atribuindo valor 1 para esses dias 
  \item Fazer o mesmo para os valores menores e iguais aos limites fornecidos pelo usuário para \texttt{wlim, temp.lim, hlim e prob.chuva} – atribuindo valor 0
  \item \texttt{If fase.lua = T} selecionar os dias dentro do período escolhido (indo de \texttt{dia.incio} ao \texttt{dia.final}) e retornar as fases da lua referente a estes dias (coluna de dados no objeto calendário) – criar nova coluna em \texttt{dados.periodo.campo} chamada \texttt{lua}
  \item \texttt{If recurso = T} selecionar os dias dentro do período escolhido (indo de \texttt{dia.incio} ao \texttt{dia.final}, de acordo com o recurso escolhido pelo usuário e retornar \texttt{FALSE} para período de defeso e \texttt{TRUE} para pesca aberta (coluna de dados no objeto \texttt{calendario}) – criar nova coluna em \texttt{dados.periodo.campo} chamada \texttt{defeso}
  \item Calcula a media de \texttt{wlim, temp.lim, hlim e prob.chuva} para tempo igual a 1 e igual a 0
\end{enumerate}


\textbf{Saída:}
\begin{itemize}
  \item Lista contendo: as colunas \texttt{dias\$dados.periodo.campo}, \texttt{lua\$dados.periodo.campo}, \texttt{tempo\$dados.periodo.campo}, \texttt{defeso\$dados.periodo.campo} e as médias de cada variável de acordo com os valores de tempo (0 ou 1)
\end{itemize}
 Comentários Lucas Camacho
Já essa função eu achei que a proposta tem fundamento porém acho que ela está fazendo muito pouco para o usuário da funcão. Pelo que eu entendi você cria um data.frame e vai selecionando os dados baseado nos outros argumentos da função e retorna valores médios para o usuário. Sugiro que você reveja toda sua ideia e o que você quer retornar para o usuário final.

Além disso, queria te atentar para a Verificação de parâmetros dessa proposta semelhante a feita na proposta anterior
\begin{itemize}
  \item Nos argumentos que precisam ser \texttt{character}, o que acontece se eu colocar um \texttt{character} meio bizarro e inesperado? Parece bobo mas é sempre bom lembrar que uma pessoa que pegar sua função não vai saber direito como funciona e como ela pode ou não usá-la.
\end{itemize}


Finalmente, se você manter as ideias dessa forma eu aconselho que você trabalhe com a proposta A e se quiser trabalhar com a B, pense no que você quer fazer, no que quer entregar para o usuário e o mais importante, o quão complexo ou quão desafiador construir essa função pode ser pra você.

Bom, qualquer dúvida ou desespero (rs) pode mandar e-mail pra mim que eu respondo assim que possível (lucas.camacho@usp.br)

Grandes abraços

\begin{center}
\line(1,0){250}
\end{center}



\textbf{Links para o trabalho final}

Acabei decidindo fazer o trabalho final desenvolvendo a Proposta Principal. Os argumentos da função e alguns passos foram modificados da proposta, para facilitar o entendimento do usuário, reduzir a chance de erros e otimizar o processamento. A função \texttt{monitoraR} baixa arquivos do modelo WaveWatch III e calcula diversos parâmetros importantes para entender a dinâmica da praia, suas características morfológicas e o risco de correntes de retorno para as datas desejadas pelo usuário, da data presente até 6 dias no futuro. 
\begin{itemize}
  \item Link para código da função: \href{http://ecor.ib.usp.br/doku.php?id=05_curso_antigo:r2019:alunos:trabalho_final:mariana.santos.martins:monitorar}{.:monitoraR}
  \item Arquivo da funcao: \href{media/bie5782/01_curso_atual/alunos/trabalho_final/mariana.santos.martins/funcao_monitorar_finalizada.r}{funcao\_monitorar\_finalizada.r}
  \item Link para a ajuda da função :   \href{http://ecor.ib.usp.br/doku.php?id=05_curso_antigo:r2019:alunos:trabalho_final:mariana.santos.martins:help}{.:Help}
\end{itemize}


\end{document}
