Patrícia Coutinho Müller
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: exec
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.
