Traduções desta página:

Ferramentas do usuário

Ferramentas do site


05_curso_antigo:alunos2012:alunos:trabalho_final:naira.silva:start

Naira Juliana da Silva

Atualmente sou mestranda do Programa De Pós-Graduação em Oceanografia Biológica do Instituto Oceanográfico da Universidade de São Paulo, atuando em projetos ligados a trofodinâmica do zooplâncton marinho, com ênfase em interações entre copépodes planctônicos e microalgas potencialmente nocivas.

Exercícios

PLANO A – Taxa de ingestão

plancton.jpg

Criar uma função que calcule a taxa de ingestão de microorganismos em função da concentração de alimento oferecida (resposta funcional), com base em dietas definidas e diferentes equações para estimativas da taxa de ingestão.

A função terá por finalidade receber:

  • Conjunto de dados I: Um conjunto concentrações iniciais e finais de alimento para frascos controle (sem animais) e frascos experimentais (com animais);

No meu caso estes dados consistem em contagens de amostras de microalgas marinhas no formato de planilhas de Excel extraídas do software COULTER® AccuComp®. As contagens das amostras foram executadas em contador de partículas (Beckman® Z Series). Para cada experimento, isto é, para a determinação de uma única curva de resposta funcional, o número mínimo de planilhas é 270 (90 referentes às contagens iniciais e 180 referentes as contagens após duas incubações de 24h). Cada planilha é composta por colunas com várias variáveis relativas a cada partícula contada. A coluna de interesse apresenta o tamanho de cada partícula contada em µm. A densidade celular deverá ser obtida mediante a seleção das partículas compreendidas dentro do intervalo de tamanho correspondente à dieta oferecida (determinado pelo usuário).

  • Conjunto de dados II: Um arquivo contendo o número de indivíduos incubados, o número de indivíduos ao final das incubações, o intervalo de incubação e o volume dos frascos experimentais. Pensei em uma panilha.csv contendo os dados separados em colunas.
  • Uma equação: Uma função para a estimativa da taxa de ingestão do microorganimos de interesse;

Para o caso da minha dissertação, na qual os experimentos foram executados com copépodes planctônicos marinhos, as concentrações médias nos frascos de incubação (C), as taxas de filtração (F) e as taxas de ingestão (I) são estimadas de acordo com as equações propostas por Frost (1972) e modificadas por Kiørboe et al. (1982), sendo o desaparecimento de partículas nas garrafas experimentais, ao longo do tempo de incubação, contrastado com as concentrações nas garrafas controle.

E retornar:

  • Uma tabela contendo as taxas de ingestão (I) e filtração (F) e sua estatística exploratória básica;
  • Gráficos com as médias e erro-padrões para as taxas de filtração e ingestão apresentadas na tabela, com equações de regressão adequadas;
  • Uma tabela contendo o resultado de um teste estatístico para avaliar possíveis diferenças entre os tratamentos (tenho aplicado testes não paramétricos com o auxílio de programas estatísticos – procedimento usual na literatura sobre o tema-, mas gostaria de repensar e tentar automatizar esta etapa também).

Aplicação: Tenho feito todas as etapas de processamento dos arquivos em Excel de forma que para cada planilha é necessário extrair a coluna referente ao tamanho das partículas, selecionar o intervalo de contagem mais adequado, calcular as densidades médias para cada amostra (cada amostra é contada de três a seis vezes no equipamento), calcular a densidade média para cada tratamento (considerando três réplicas) e inserir as médias finais nas equações. A função me ajudaria a reprocessar alguns experimentos e confirmar os padrões obtidos, além de possiblitar a finalização de três experimentos ainda não processados (três conjuntos de 270 planilhas :-\). O equipamento tem sido usado com rotina no laboratório e acredito que esta função também poderá ser útil para outros alunos. Não sei se é possível, mas minha idéia é que a função seja flexível para outras equações de ingestão e para diferentes tipos de experimentos, de forma que os conjuntos de dados I e II também possam ser ajustados.

FROST, B. W. 1972. Effects of size and concentration of food particles on the feeding behavior of the marine planktonic copepod Calanus pacificus. Limnol. Oceanogr., 17(6): 805- 815.

KIØRBOE, T.; MØHLENBERG, F.; NICOLAJSEN, H. 1982. Ingestion rate and gut clearance in the planktonic copepod Centropages hamatus (Lilljeborg) in relation to food concentration and temperature. Ophelia, 21(2): 182-194.

PLANO B – Curvas de crescimento

O Plano B tem como principal objetivo aprimorar a função Curvas de crescimento idealizada por uma colega de laboratório que foi aluna da turma de 2011 da disciplina BIE5782. A função elaborada recebe planilhas de contagens em contador de partículas (.csv), calcula as médias das contagens para cada dia e retorna a curva de crescimento para uma determinada microalga marinha. A idéia para o plano B consiste em aprimorar esta função conforme as seguinte ideias:

Alterações na entrada de dados:

  • Permitir que o usuário escolha o intervalo de tamanho da espécie de microalga sob estudo, uma vez que mais de uma espécie pode ser empregada ao longo dos experimentos. Seria interessante que vários intervalos pudessem ser inseridos simultaneamente;
  • Alteração da forma de entrada dos arquivos na função (as planilhas foram carregadas uma a uma, porém o número de planilhas geradas em um único experimento é muito superior). Seria interessante que vários arquivos pudessem ser lidos em sequencia;

Alteração na saída de dados:

  • Gerar gráficos relacionando outros parâmetros de crescimento em função do tempo (ex.: variações do biovolume celular e das taxas de crescimento ao longo do tempo;
  • Gerar uma planilha que indique as fases da curva de crescimento com base no cálculo das taxas de crescimento plotadas (extremamente útil para verificar o estado fisiológico das culturas de microalgas durante a execução dos experimentos com copépodes).

funcao_curva_crescimento_preliminar.r

Comentários das propostas (Leo)

As duas propostas estão bem interessantes. Facilitarão tarefas trabalhosas e podem ser utilizadas em outros estudos e experimentos. Minha única preocupação é que podem dar bastante trabalho e o prazo pode não ser suficiente para que você as termine. Se escolher a proposta A (que eu recomendo pelo fato de ser nova) sugiro começar com a equação mais simples, deixando outras equações e a automatização dos testes estatísticos para depois.

Comentário (Naira)

Como previsto pelo Leo eu consegui finalizar apenas uma função que calcula a taxa de ingestão para uma equação padrão (Frost, 1972), mas não deu tempo de modificar a função para aplicação de outras equações. Em relação à automatização dos testes estatísticos, eu consegui escrever um scrip complementar que recebe a saída da função principal (Função INGESTION) e testa a diferença entre as médias calculadas para cada tratamento, mas não deu tempo de tentar unificar as duas funções. Deste modo, estou inserindo esta parte como um script complementar (STAT_IR).

Minha Função

INGESTION <- function(EXP.LIST, REPLICATES1, REPLICATES2, DATA)
                      
{

install.packages("plotrix")
require(plotrix)

ALL.FILES <- list(file=NULL) 
for (i in 1:length(EXP.LIST)){ 
  x <- read.table(EXP.LIST[i], skip=37, nrows=255, header=TRUE, sep="\t") 
  x1 <- data.frame(x) 
  ALL.FILES[i] <- list(x1) 
}

if(DATA$algae[1] == "FLA") ED <- 0.11 #Fator de convercao para algas flageladas;
else  ED <- 0.13 #Fator de conversao para dinoflagelados;

NT <- (DATA$f.start + DATA$f.end)/2 

DATE1 <- rep("2012-04-19", times=15)
TIME1 <- paste(DATE1, DATA$start)
TIME.START<- strptime(TIME1, "%Y-%m-%d %H:%M:%S")
DATE2 <- rep("2012-04-20", times=15)
TIME2 <- paste(DATE2, DATA$end)
TIME.END <- strptime(TIME2, "%Y-%m-%d %H:%M:%S")
TIMES <- difftime(TIME.END, TIME.START, units="hours") 
TIMES <- as.numeric(TIMES) #Intervalo de incubação de cada uma das garrafas experimentais;

ALL.CONCENTRATIONS <- rep(0, each= length(ALL.FILES))
for(i in 1:length(ALL.FILES)){ #Corre a lista de que contemn todos os arquivos;
  x3 <- sum(ALL.FILES[[i]]$X.mL[ALL.FILES[[i]]$um<(DATA$d.upper[1]) & ALL.FILES[[i]]$um>(DATA$d.lower[1])]) #Extrai as densidades dentro do intervalos de tamanho desejado para cada um dos arquivos;
  ALL.CONCENTRATIONS[i] <- x3 #Armazena as densidades extraidas em um novo vetor;
}


MEAN.CONCENTRATIONS <- rep(0, each= length(REPLICATES1))
COEFF.VAR.CONCENTRATIONS <- rep(0, each= length(REPLICATES1)) 
a=1 
b=REPLICATES1[1] 
for(i in 1:length(REPLICATES1)){ #Corre o vetor "REPLICATES1" para preenchimento do vetor "ALL.DENSITIES" de acordo com as posicoes adequadas;
  x4 <- mean(ALL.CONCENTRATIONS[a:b]) 
  x5 <- (sd(ALL.CONCENTRATIONS[a:b])/x4)*100 
  MEAN.CONCENTRATIONS[i] <- x4*ED*(DATA$biov[1])*(DATA$fc[1]) #Converte as medias para valores em umg/L e armazena em um novo vetor;
  COEFF.VAR.CONCENTRATIONS[i] <- x5 
  a=b+1 
  i=i+1 
  b=a+REPLICATES1[i]-1 
}


CONC.INICIAL.MEAN <- rep(0, each=5) 
CONC.CONTROL.MEAN <- rep(0, each=5) 
ia=1 
ib=REPLICATES2[1] 
ca=4 
cb= ca + REPLICATES2[2] -1 
for(i in 1:5){
  x6 <- mean(MEAN.CONCENTRATIONS[ia:ib]) 
  x7 <- mean(MEAN.CONCENTRATIONS[ca:cb])
  CONC.INICIAL.MEAN[i] <- x6 
  CONC.CONTROL.MEAN[i] <- x7 
  ia <- ib + REPLICATES2[i*3-1] + REPLICATES2[i*3] + 1 #Atualiza os indices ia e ib: posicao anterior mais a soma dos dados compreendidos no vetor
  ca <- cb + REPLICATES2[i*3] + REPLICATES2[i*3+1] + 1 #MEAN.CONCENTRATIONS que correspondem as posicoes no vetor REPLICATES2 (anda no vetor
  i = i + 1                 #MEAN.CONCENTRATIONS de acordo com um numero ditado pelo vetor REPLICATES2)
  ib <- ia + REPLICATES2[i*3-2] - 1 
  cb <- ca + REPLICATES2[i*3-1] - 1
} 


TEM <- c(MEAN.CONCENTRATIONS[7:9], MEAN.CONCENTRATIONS[16:18],
         MEAN.CONCENTRATIONS[25:27],MEAN.CONCENTRATIONS[34:36],
         MEAN.CONCENTRATIONS[42:44])

TREAT <- c(CONC.INICIAL.MEAN[1], CONC.INICIAL.MEAN[1], CONC.INICIAL.MEAN[1], #OBS.: Esta parte eu tentei simplificar com a função "rep",
           CONC.INICIAL.MEAN[2], CONC.INICIAL.MEAN[2], CONC.INICIAL.MEAN[2], #mas não consegui, nem atravez do "each",nem atravez do "times";
           CONC.INICIAL.MEAN[3], CONC.INICIAL.MEAN[3], CONC.INICIAL.MEAN[3],
           CONC.INICIAL.MEAN[4], CONC.INICIAL.MEAN[4], CONC.INICIAL.MEAN[4],
           CONC.INICIAL.MEAN[5], CONC.INICIAL.MEAN[5], CONC.INICIAL.MEAN[5])

CONT <- c(CONC.CONTROL.MEAN[1], CONC.CONTROL.MEAN[1], CONC.CONTROL.MEAN[1], 
          CONC.CONTROL.MEAN[2], CONC.CONTROL.MEAN[2], CONC.CONTROL.MEAN[2],                                                                 
          CONC.CONTROL.MEAN[3], CONC.CONTROL.MEAN[3], CONC.CONTROL.MEAN[3],
          CONC.CONTROL.MEAN[4], CONC.CONTROL.MEAN[4], CONC.CONTROL.MEAN[4],
          CONC.CONTROL.MEAN[5], CONC.CONTROL.MEAN[5], CONC.CONTROL.MEAN[5])

IR=rep(0,each=15) 
j=1 
for(i in 1:15){ 
  x8 <- (((TEM[i] - TREAT[i]) / (log(TEM[i] / TREAT[i]))) * (((DATA$vol[1])/NT[j]) *  log((TREAT[i] * CONT[i])/(TREAT[i] * TEM[i]))))/TIMES[j] #Equacao de ingestao (FROST, 1972) adaptadas por KIØRBOE et al. (1982);
  j = j+1 
  IR[i] <- x8 
}


RESUMO.IR <- summary(IR) 
RESUMO.IR$Sd <- sd(IR) 
IR.POS <- c() 
for(i in 1:15){ 
  if(IR[i] >= 0)
     IR.POS[i] <- IR[i]
  } 
IR.POSITIVE <- as.vector(na.exclude(IR.POS)) 
RESUMO.IR.POSITIVE <- summary(IR.POSITIVE)
RESUMO.IR.POSITIVE$Sd <- sd(IR)           
RESUMO.TOT <- data.frame(RESUMO.IR, RESUMO.IR.POSITIVE) 
RESULT <- data.frame(TREAT,IR) 
IR.MEAN <- (tapply(RESULT$IR, RESULT$TREAT, mean))              
IR.SD <- (tapply(RESULT$IR, RESULT$TREAT, sd)) 
IR.STD.ERROR <- tapply(RESULT$IR, RESULT$TREAT, std.error) 
RESUMO.MEANS <- data.frame(IR.MEAN, IR.SD, IR.STD.ERROR) 
C <- rep(1:5, each=3)
RESULT.STAT <- data.frame(C,IR) 
 
X11()
par(mfrow = c(1,2))

plot(RESULT, xlab=expression("Concentração de alimento (µg C L"^"-1"*")"),
     ylab=expression("Resposta funcional (µg C copepode"^"-1 "*"dia"^"-1"*")"),
     xlim=c(0,450), ylim=c(-0.2,0.6),
     pch=19, bty="L")
text(x=380, y=0.6, "A", font=2)
text(x=380, y=0.55, DATA$EXP[1])

CONC.MEAN.INC <- sort(CONC.INICIAL.MEAN)
RESULT2 <- data.frame(CONC.MEAN.INC, IR.MEAN)    
plot(RESULT2, xlab=expression("Concentração de alimento (µg C L"^"-1"*")"),
     ylab="", xlim=c(0,450), ylim=c(-0.2,0.6),
     pch=19, bty= "L")
text(x=380, y=0.6, "B", font=2)
text(x=380, y=0.55, DATA$EXP[1])
for(i in 1:5){
arrows(CONC.MEAN.INC[i],IR.MEAN[i]+IR.STD.ERROR[i],
       CONC.MEAN.INC[i], IR.MEAN[i]-IR.STD.ERROR[i],
       angle=90, code=3, length=0)
}

savePlot("RESPOSTA FUNCIONAL", type="jpeg")
write.csv(RESUMO.TOT, file= "RESUMO.TOT.csv")
write.csv(RESULT, file= "INGESTION.csv")
write.csv(RESULT.STAT, file = "INGESTION.STAT.csv")

}

###ENTRADAS DA FUNCAO IR########################################
###EXEMPLO: EXPERIMENTO COM A MICROALGA RHODOMONAS CF. SALINA###
EXP.LIST <- list.files(pattern="\\.XLS$") 
REPLICATES1 <- rep(1, each=44) 
REPLICATES2 <- c(rep(3, times=13), 2, 3) 
DATA <- read.csv("DATA.txt", sep="\t")  
#################################################################

INGESTION (EXP.LIST, REPLICATES1, REPLICATES2, DATA)

Help

modelo package:unknown R Documentation

Calcula da Taxa de Ingestão de microorganismos (ex.: microcrustáceos marinhos) incubados em microcosmos

Description:

     INGESTION calcula um vetor de valores correspondentes à taxa de ingestão de cinco tratamentos
     (número usual em experimentos de incubação do mesmo gênero na literatura)

Usage:

     INGESTION (LISTA, REPLICATES1, REPLICATES2, DATA)

Arguments:

     EXP.LIST:    Um vetor de caracteres; um vetor contendo os nomes dos arquivos de leitura (.XLS/.CSV/.TXT) provenientes
                  preferencialmente de contadores automáticos de partículas (ex. .Z2 exportados para .XLS/.CSV/.TXT);
     REPLICATES1: Um vetor de números; um vetor contendo o número de vezes que cada uma das amostras foi analisada/
                  numero de arquivos correspondentes a uma mesma amostra/ numero de subamostragens de cada amostra;
     REPLICATES2: Um vetor de números; contendo o número de réplicas adotadas para frascos correspondentes às concentrações
                  iniciais, frascos controles (sem organismos) e frascos experimentais (com organismos);
     DATA:        Um data.frame; data.frame contendo as seguintes colunas:
                  - EXP; designação do experimento sob análise;
                  -algae; algae=FLA para microalgas flageladas e algae=DIN para dinoflagelados; 
                  -d.upper; diametro superior do espectro de distribuição de tamanho da microalga empregada;
                  -d.lower; diâmetro inferior do espectro de distribuição de tamanho da microalga empregada;
                  -biov; biovolume medio da microalga empregada;
                  -vol; volume da garrafa de incubação empregada;
                  -fc; fator de correção da unidade de concentração dos itens alimentares (conversão das
                       densidades dos itens alimentares, em cel.mL conforme padrão dos arquivos sob análise,
                       para cel.L, conforme padrão mais empregado na literatura sob o tema;
                  -f.star; número de fêmeas incubadas em cada garrafa;
                  -f.end; número de fêmeas ao final das incubações;

-star; horário no qual foram iniciadas as incubações;

  1. end; horário no qual foram finalizadas as incubações.

Details:

    O experimento de determinação da taxa de ingestão (resposta funcional) de microorganismos corresponde, em resumo, à 
    incubação de um número conhecido de microorganismos em garrafas (garrafas experimentais) por um determinado intervalo
    de tempo (período de incubação). A taxa será então calculada a partir da densidade dos itens alimentares após o final
    da incubação subtraída da densidade inicial (frascos iniciais) e corrigida pela determinação do crescimento dos itens
    alimentares ao final da incubação (obtida através da incubação simultânea de frascos controles). Sob este desenho 
    experimental podem ser incubados diferentes organismos, diferentes itens alimentares e aplicadas distintas concentrações
    de itens alimentares com números de réplicas desejados. A função INGESTION se adapta a diferentes itens alimentares e 
    diferentes números de réplicas, porém foi ajustada para apenas 5 tratamentos, número frequentemente aplicado na literatura.
    Os vetores REPLICATES 1 e 2 permitem que experimentos com diferentes números de réplicas e diferentes números de contagens
    para cada réplica sejam igualmente processados. 

Value:

   Retorna uma lista de objetos: 
comp1 : .csv1; list (summary1; análise explorária aplicada a todos os dados de ingestão);
                   (summary2; análise explorária aplicada somente aos dados de ingestão positivos);
                    
comp2:  .csv2; data.frame (Tratamentos/Concentrações, Taxa de Ingestão - (TREAT, IR));
comp3 : .csv3; data.frame (Tratamentos/Concentrações, Taxa de Ingestão - (C, IR)) para utilização na função STAT_IR (valores numeros relativos
        aos tratamentos impressos como fatores (Tratamentos 1 a 5);
comp4 : plot; plot1 de todos os valores de IR em funcao dos tratamentos (dispersao) e plot2 dos valores medios de IR em funcao
        dos tratamentos com seus respectivos desvios;

Author(s):

Naira Juliana da Silva

References:

Fatores aplicados para conversão do biovolume para unidades de carbono para microalgas flageladas e dinoflagelados:	

EDLER, L. 1979. Recommendations on methods for marine biological studies in the Baltic Sea. 
      Phytoplankton and chlorophyll. The Baltic Marine Biologists, Publications No 5.
Equação para cálculo da taxa de ingestão de microorganismos:
FROST, B. W. 1972. Effects of size and concentration of food particles on the feeding behavior of the marine planktonic copepod Calanus pacificus.
      Limnol. Oceanogr., 17(6): 805- 815.
      KIØRBOE, T.; MØHLENBERG, F.; NICOLAJSEN, H. 1982. Ingestion rate and gut clearance in the planktonic copepod Centropages hamatus (Lilljeborg) in relation to food concentration and temperature. 
      Ophelia, 21(2): 182-194.

Examples:

#Rhodomonas cf. salina experiment - flagelate microalgae#

INGESTION(EXP.LIST = list.files(pattern=“\\.XLS$”),

        REPLICATES1 ← rep(1, each=44)
        REPLICATES2 ← c(rep(3, times=13), 2, 3)
        DATA = read.csv("DATA.txt", sep="\t"))

Arquivos para processamento da função

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