INGESTION <- function(EXP.LIST, REPLICATES1, REPLICATES2, DATA) { install.packages("plotrix") require(plotrix) ###LEITURA DOS ARQUIVOS DE CONTAGEM### ALL.FILES <- list(file=NULL) #Cria uma lista vazia para armazenar todos os arquivos do experimento; for (i in 1:length(EXP.LIST)){ #Corre o vetor contendo o nome dos arquivos para armazenamento dos dados dentro da lista; x <- read.table(EXP.LIST[i], skip=37, nrows=255, header=TRUE, sep="\t") #Le o arquivo correspondente ao nome da posicao "i" do vetor e armazena em um objeto temporario; x1 <- data.frame(x) #Cria um data.frame com os dados do arquivo e armazena em um segundo obejto temporario; ALL.FILES[i] <- list(x1) #Armazena o objeto temporario (data.frame) em sua respectiva posicao na lista. } ###################################### ###DETERMINACAO DO FATOR DE CONVERSAO ADEQUADO CONFORME EDLER (1979)### if(DATA$algae[1] == "FLA") ED <- 0.11 #Fator de convercao para algas flageladas; else ED <- 0.13 #Fator de conversao para dinoflagelados; ################################################# ###CALCULO DO NUMERO MEDIO DE FEMEAS INCUBADAS### NT <- (DATA$f.start + DATA$f.end)/2 #Numero medio de femeas incubadas; ################################################# ###CALCULO DO PERIODO DE INCUBACAO EM HORAS### 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; ############################################## ###CALCULO DAS DENSIDADES CELULARES DENTRO DOS INTERVALOS DE TAMANHO DESEJADOS### 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; } ################################################################################# ###CALCULO DOS VALORES MEDIOS DE CADA AMOSTRA CONSIDERANDO OS DIFERENTES NUMEROS DE CONTAGENS### MEAN.CONCENTRATIONS <- rep(0, each= length(REPLICATES1)) #Cria um vetor nulo para armazenar os valores medios das densidades celulares; COEFF.VAR.CONCENTRATIONS <- rep(0, each= length(REPLICATES1)) #Cria um vetor nulo para armazenar os valores medios dos coeficientes de variacao; a=1 #Inicializa o indice "a"; b=REPLICATES1[1] #"Inicializa o indice "b"; 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]) #Calcula as medias dentro das posicoes adequadas do vetor "ALL.DENSITIES"; x5 <- (sd(ALL.CONCENTRATIONS[a:b])/x4)*100 #Calcula os coeficientes de variacao das medias calculadas; 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 #Armazena os coeficientes de variacao calculados; a=b+1 #Atualiza o valor de "a"; i=i+1 #Corrige o valor de "i" para atualizacao do valor de "b"; b=a+REPLICATES1[i]-1 #Atualiza do valor de "b"; } ################################################################################## ###CALCULOS DAS DENSIDADES MEDIAS (EM CARBONO) NOS FRASCOS INICIAIS E CONTROLES### CONC.INICIAL.MEAN <- rep(0, each=5) #Cria um vetor nulo para armazenar os valores medios das concentracoes iniciais; CONC.CONTROL.MEAN <- rep(0, each=5) #Cria um vetro nulo para armazenar os valores medios das concentracoes nos frascos controles; ia=1 #Inicia o indice "ia"; ib=REPLICATES2[1] #Inicia o indice "ib"; ca=4 #Inicia o indice "ca"; cb= ca + REPLICATES2[2] -1 #Inicia o indice "cb"; for(i in 1:5){ x6 <- mean(MEAN.CONCENTRATIONS[ia:ib]) #Calcula as medias das concentracoes iniciais e atribui a variavel "x6"; x7 <- mean(MEAN.CONCENTRATIONS[ca:cb]) #Calcula as medias das concentracoes controle e atribui a variavel "x7"; CONC.INICIAL.MEAN[i] <- x6 #Cria um vetor contendo as concentracoes inciais medias nos frascos de incubacao para os cinco tratamentos; CONC.CONTROL.MEAN[i] <- x7 #Cria um vetor contendo as concentracoes controle medias nos frascos de incubacao para os cinco tratamentos; 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 #Corrige o valor de i; #MEAN.CONCENTRATIONS de acordo com um numero ditado pelo vetor REPLICATES2) ib <- ia + REPLICATES2[i*3-2] - 1 #Atualiza os indices ib e cb; cb <- ca + REPLICATES2[i*3-1] - 1 } ################################################################################## ###CALCULO DAS TAXAS DE INGESTAO PARA CADA UM DOS CINCO TRATAMENTOS### 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) #Cria um vetor nulo para armazenar as taxas de ingestao; j=1 #Indice criado para alterar os valores de "NT" e "TIMES"; 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 #Atualiza do valor de "j"; IR[i] <- x8 #Armazena o valor da variavel "x8" no velor "IR" (Taxa de ingestao); } ##################################################################################### ###SAIDAS DA FUNCAO### ###SAIDAS EM ARQUIVO###################################################### ###RESUMO CONTEMPLANDO TODOS OS DADOS##################################### RESUMO.IR <- summary(IR) #Cria um resumo estatisco considerando todas as taxas de ingestao calculadas; RESUMO.IR$Sd <- sd(IR) #Adiciona ao resumo criado a variavel "sd"; ###RESUMO CONTEMPLANDO APENAS DADOS POSITIVOS############################# IR.POS <- c() #Cria um vetor nulo para armazenar as taxas de ingestao positivas; for(i in 1:15){ #Corre o vetor "IR" armazenando somente valores positivos; if(IR[i] >= 0) IR.POS[i] <- IR[i] } IR.POSITIVE <- as.vector(na.exclude(IR.POS)) #Cria um vetor contendo apenas os valores positivos (sem os "NAs"); RESUMO.IR.POSITIVE <- summary(IR.POSITIVE) #Cria um resumo estatistico considerando apenas as taxas de ingestao positivas; RESUMO.IR.POSITIVE$Sd <- sd(IR) #Adiciona ao resumo criado a variavel "sd"; RESUMO.TOT <- data.frame(RESUMO.IR, RESUMO.IR.POSITIVE) #Cria um data.frame reunindo os resumos; ###RESUMO CONTEMPLANDO OS VALORES MEDIOS################################## RESULT <- data.frame(TREAT,IR) #Cria um data.frame das taxas de ingestao para cada um dos tratamentos; IR.MEAN <- (tapply(RESULT$IR, RESULT$TREAT, mean)) #Calcula a media das taxas de ingestao para cada um dos tratamentos (Obs.: #1->#5); IR.SD <- (tapply(RESULT$IR, RESULT$TREAT, sd)) #Calcula os desvios das taxas de ingestao para cada um dos tratamentos (Obs.: #5->#1);; IR.STD.ERROR <- tapply(RESULT$IR, RESULT$TREAT, std.error) #Calcula os erros das taxas de ingestao para cada um dos tratamentos (Obs.: #1->#5);; RESUMO.MEANS <- data.frame(IR.MEAN, IR.SD, IR.STD.ERROR) #Cria um data.frame reunindo as variaveis calculadas; ########################################################################## C <- rep(1:5, each=3) RESULT.STAT <- data.frame(C,IR) #Cria um data.frame com os tratamentos na forma de fatores; ########################################################################## ###SAIDAS GRAFICAS: DISPERSAO E VALORES MEDIOS############################ X11() par(mfrow = c(1,2)) ###PLOT A################################################################# 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]) ###PLOT B################################################################# 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### #Cria um objeto com o nome do experimento para posterior identificacao das saidas graficas; EXP.LIST <- list.files(pattern="\\.XLS$") #Cria um vetor de caracteres contendo os nomes dos arquivos com extensao .XLS; REPLICATES1 <- rep(1, each=44) #Vetor contendo o numero exato de contagens efetuadas para cada amostra; REPLICATES2 <- c(rep(3, times=13), 2, 3) #Vetor contendo o numero exato de replicas aplicadas para amostras iniciais, frascos experimentais e frascos controles; DATA <- read.csv("DATA.txt", sep="\t") #Arquivo contendo o numero de individuos incubados, o numero de individuos ao final das incubacoes, o intervalo de incubacao; ################################################################# INGESTION (EXP.LIST, REPLICATES1, REPLICATES2, DATA)