Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2019:alunos:trabalho_final:pmuller:start

Patrícia Coutinho Müller

img_8697.jpg

Mestranda em Oceanografia Biológica pelo Instituto Oceanográfico. Meu projeto visa descrever o repertório acústico das toninhas (Pontoporia blainvillei) na Estação Ecológica Tupinambás, litoral norte de São Paulo, e avaliar o seu modo de uso da área.

Meus exercícios

link: Exercícios

Propostas de trabalho final

Proposta 1

Em grandes arrastos com redes de plâncton, é comum o uso de um equipamento conhecido como fluxômetro para quantificar o volume total de água filtrado pela rede. Esse equipamento possui um rotor acoplado diretamente a um contador de seis dígitos que registra cada volta de seu rotor interno. O valor indicado no contador deve ser anotado antes e depois de cada coleta. Uma vez que esse valor é obtido, é possível calcular a densidade de cada espécie em determinada amostra. A densidade de uma espécie é dada por:

 De= n/V 

onde n é o número total de indivíduos de uma espécie contados em uma amostra e V é o volume de água filtrado pela rede em m³. Por sua vez, o volume de água quantificado pelo fluxômetro é obtido a partir da seguinte equação:

 V= A*(Rf – Ri)*C 

onde A corresponde a área da abertura da rede em m², Rf é o valor final indicado no contador do fluxômetro, Ri o valor inicial e C é o fator de aferição obtido após a calibração do fluxômetro. Considerando que muitas vezes, o número de espécies é alto assim como o número de amostras, realizar esse trabalho mecanicamente leva bastante tempo. Dessa forma, a proposta é fazer uma função que calcule a densidade de todas as espécies em uma ou mais amostras.

Planejamento da função:

 Entrada= dens.flux (x, a, c, graphic=T, dec=".") 

x = data frame;

a = área da abertura da rede (m²);

c =ator de aferição do equipamento;

Graphic =TRUE, se usuário deseja gerar um gráfico com as densidades por amostra;

dec=“.” para que o separador decimal utilizado seja ponto.

Verificar parâmetros:

  • x é um dataframe com as colunas amostra, espécie, n, Rf, Ri?
  • As cinco colunas do data frame possuem o mesmo tamanho?
  • As colunas amostra e espécie são vetores de classe caracter?
  • As colunas n, Rf e Ri são vetores de classe integer?
  • Os valores de Rf são maiores que Ri?
  • A é um objeto da classe numérica?
  • C é um objeto da classe numérica?
  • A e C são maiores que zero?

Pseudo-código:

  • Verificar se os parâmetros estão corretos (usar if e stop – caso não estejam);
  • Transformar NAs em 0 (emitir warning sobre onde ocorreram as possíveis transformações);
  • Criar um objeto dens para guardar o valor das densidades;
  • Criar um ciclo for ( ) com contador i de 1:n ;
  • Aplicar a equação De= n/ A*(Rf-Ri)*C;
  • Gravar resultado em dens[i];
  • Indexar o objeto dens ao dataframe inicial;

Se graphic=T:

  • Criar um histograma com a densidade média de organismos em cada amostra;
  • Fazer uma lista com o dataframe e o histograma;

Saída:

  • Dataframe inicial com uma nova coluna de densidades (graphic=F) ou lista com o dataframe e histograma (graphic=T).

Renan Del Bel 2019/06/13 12:53

Em geral gosto de onde isso está indo, mas acho que podemos investir nessa ideia para que fique ainda melhor.

Algumas dúvidas:

  • Não entendi direito o input. Por que colocar Rf e Ri para cada espécie?
  • Onde você usa dec =“.” na função?
  • Por que no output o histograma retorna na lista e não é só plotado?
  • Não conheço bem o procedimento, mas seria muito estranho usar equipamentos diferentes, como outra rede ou outro fluxômetro, em cada amostragem?
  • Seria possível fazer amostragem em dias diferentes, e nesse caso seria possível ter C diferente para cada medição, mesmo se for usado o mesmo aparelho?
  • Pensando sobre como seria mais comum anotar esses dados em campo, imagino que você teria uma tabela de medidas do fluxômetro para cada amostra, mas cada amostra teria a própria tabela de espécies com suas respectivas abundância, faz sentido?

O que eu sugiro:

Sobre o input:

  • Deixe explícito como utilizar o parâmetro 'dec', inclusive o que acontece se outro valor for atribuído a ele.
  • Imagino que o ideal seja um dataframe espécie/abundância/amostra e outro dataframe amostra/Rf/Ri/A/C.

Sobre a verificação de dados:

  • Não apenas verifique se o formato está correto, tente converter para o correto quando possível.
  • Um dataframe não pode ter colunas de tamanhos diferentes, uma coisa amenos para fazer :)
  • Como tratar se uma espécie aparece mais de uma vez no data frame, na mesma amostra?
  • Supondo que você decidiu aceitar minha sugestão de input, o que acontece se a pessoa tiver várias amostras em um data frame mas só uma amostra no outro?

Sobre output:

  • Você não precisa incluir os gráficos em um objeto, apenas plote eles. Se o usuário quiser ográfico salvo, basta abrir um device (por exeplo pdf()) antes de rodar a sua função. Ou, você pode deixar salvar os gráficos no computador como opção extra da sua função.

Além disso, não entendi porque o o loop usa 1:n. Imagino que você quis dizer 1:número de linhas de x?

Note que as sugestões que dei tornam a função mais complexa. Planeje antes como implementar elas. Se tiver dúvidas pode entrar em contato, vou deixar meu e-mail aqui: delbel.renan@gmail.com.

Obrigada, Renan! Com base nas suas sugestões e em algumas dúvidas que tirei com você, vou optar por utilizar dois data frames, da forma que sugeriu, e vou tentar converter para o formato correto sempre que possível. Além disso, vou colocar um if para evitar que o número de amostras nos data frames seja diferente e também para que a mesma espécie não se repita em uma amostra. Para aplicar a equação farei indexação das colunas, ao invés de usar loop. O output da função não será a lista, como você sugeriu, um gráfico será só plotado mesmo. Quanto ao dec=“.”, estou pensando que talvez não seja necessário na função… Mais uma coisa, ao invés de transformar os NAs em 0 também pensei em ocultar as linhas com NA.

— Patrícia em 25/06/2019

Proposta 2

Temperatura e salinidade são algumas das propriedades físicas mais importantes da água do mar. Exercem influência em muitos eventos químicos, físicos, geológicos e biológicos. Variações de temperatura e salinidade também se combinam para determinar a densidade da água do mar, a qual influencia os movimentos verticais de massas d’água com consequências no ambiente marinho em todos os aspectos. O CTD (Conductivity, Temperature and Depth) é um equipamento muito utilizado na Oceanografia para se obter valores de condutividade, profundidade e temperatura da água do mar. A partir dos dados gerados, comumente é elaborado um diagrama T-S que permite visualizar a temperatura em função da salinidade nas diferentes profundidades amostradas. Dessa forma, a minha proposta é elaborar um diagrama T-S a partir de dados brutos obtidos pelo CTD (ou outra sonda multiparâmetros que registre as mesmas variáveis).

Planejamento da função:

 Entrada= t.s (t, c, p, sal=F, dec=”.”) 

t = temperatura (°C);

c = condutividade (mS/cm) (sal=F) ou salinidade (PSU) (sal=T);

p = profundidade (m);

sal =FALSE, se o usuário for usar dados de condutividade para converter para salinidade;

dec=”.” para que o separador decimal utilizado seja ponto.

Verificar parâmetros:

  • t é um vetor da classe numérica?
  • c é um vetor da calsse numérica?
  • c é maior que 0?
  • p é um vetor da classe numérica?
  • p é um vetor maior que 0?
  • t,c e p possuem o mesmo tamanho?

Pseudo-código:

  • Transformar cada variável a ser utilizada na função (t, c e p) em um objeto do tipo vetor;
  • Verificar se os parâmetros estão corretos (usar if e stop – caso não estejam);
  • Omitir NAs;

Se sal=F

  • Criar um objeto salin para guardar o valor da salinidade;
  • Criar um ciclo for ( ) com contador i de 1: length © ;
  • Converter a condutividade para µS/cm (multiplicar por 10³)
  • Aplicar a equação para converter condutividade em salinidade:((5.572/10^4) *c)+ ((2.02/10^9)*c²)
  • Gravar resultado em salin[i];
  • Plotar o diagrama de Temperatura e Salinidade relacionando com as profundidades em que foram obtidos (nomear diag.ts).
  • Retornar diag.ts.

Renan Del Bel 2019/06/13 13:00

Essa não é uma função ruim, mas para os objetivos do trabalho final ela é muito simples.

Sugiro investir na proposta A.

Trabalho final:

Como indicado, segui com a proposta 1 que faz o cálculo da densidade de espécies em diferentes amostras.

Função dens.flux() e página de ajuda.

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