====== Daniela Alves Maia da Silva ====== {{:bie5782:01_curso_atual:alunos:trabalho_final:daniela.alvesmaia:dsc_1198.jpg?200|}} Mestranda em Oceanografia Química pelo Instituto Oceanográfico - USP. Trabalha atualmente com **poluição marinha**, tendo como foco a contaminação de aves marinhas por poluentes orgânicos persistentes (POPs) em ilhas oceânicas brasileiras, desenvolvendo o projeto no Laboratório de Química Orgânica Marinha - LabQOM. [[http://www.io.usp.br/index.php/pesquisa/laboratorios#laboratório-de-química-orgânica-marinha-labqom|Laboratório de Química Orgânica Marinha]] [[.:exec]] **PROPOSTA DE TRABALHO FINAL** **PROPOSTA A** - FUNÇÃO CROMATRANS() **MOTIVAÇÃO E JUSTIFICATIVA** A cromatografia gasosa tem ampla aplicação em análises quantitativas, sendo utilizada para separar compostos químicos em amostras provenientes de diversas áreas de estudo, como a química, biologia, oceanografia, ciências dos alimentos entre outras. Como resultado de uma análise, em geral, o que se obtém são planilhas com inúmeros valores, correspondentes às concentrações de cada composto de interesse, identificados em cada amostra. Para que tais valores possam ser interpretados, são necessários alguns procedimentos de correção e ajuste dos dados brutos, procedimentos estes que demandam tempo e paciência, quando se trabalha com um grande volume de amostras. Sabendo isso, proponho uma função que faça automaticamente as principais correções nos dados reduzindo, de forma considerável, o tempo gasto pelo usuário ao realizar os ajustes manualmente. Correções a serem realizadas: A //**correção pelos brancos**// (amostras sem os analitos), que são processados e analisados juntos das amostras, tem como objetivo verificar se houve contaminação durante as etapas de processamento analítico. Desta forma, os valores dos brancos devem ser subtraídos dos valores do restante das amostras, para que sejam determinadas as concentrações reais detectadas; O //**fator de multiplicação**//, quando não determinado durante a análise, deve ser aplicado a posteriori, para correção das concentrações nos compostos identificados nas amostras. Este fator é determinado pela razão entre o volume final para o qual o extrato analisado foi concentrado e a massa de amostra que foi extraída inicialmente; Por fim, serão aplicados os //**limites de detecção do método**// (LDM) sobre as concentrações obtidas para cada composto identificado nas amostras. Valores >LDM são mantidos, enquanto valores menores são descartados e substituídos pela notação “ =====Comentários Vitor Rios ===== Daniela, suas propostas estão bem escritas e claras. Eu gostei da proposta B porque tem uns desafios interessantes de como organizar o gráfico, mas você pode escolher a que gostar mais e seguir adiante. =====Comentários Daniela ===== Boa noite Vitor. Agradeço pelas considerações! Seguirei com a proposta B a princípio, mas deixo a proposta A como uma alternativa! {{:bie5782:01_curso_atual:alunos:trabalho_final:daniela.alvesmaia:img_20170601_135127.jpg?200|}} (*Imagem retirada de Pereira, R.C.; Soares-Gomes,A. Biologia Marinha. Editora Interciência. Rio de Janeiro, 2009.) =====Help da Função litem===== litem package:unknown R Documentation Construção de linhas do tempo contendo informações de natureza diversa. Retorna imagens gráficas úteis para representação de acontecimentos sequenciais e que são amplamente utilizadas nas mais diversas áreas de conhecimento ou mesmo organização pessoal. Description: A função cria uma linha do tempo a partir de datas e eventos previamente informados, acrescentando uma breve descrição sobre cada evento. A função permite a elaboração de linhas do tempo contendo até 12 eventos cada. Usage: litem(dados,title="",save=FALSE) Arguments: dados: Objeto de classe data.frame que contenha os dados dos eventos e datas a serem utilizados na construção gráfica. title: Título que o usuário deseja adicionar a linha do tempo. Caso não indique nada, o DEFAULT da função indica ausência de título. save=: Se TRUE, o usuário tem interesse em salvar sua linha do tempo ao final, se FALSE ou se não indicar nada, o usuário não receberá a mensagem de orientação ao final da função. Details: Os componentes do data.frame são as seguintes colunas: Coluna 1: **Data**: Deve conter as datas em formatos de anos(YYYY),para construção da linha de tempo. Uma outra possibilidade é a entrada de datas em formato de dias (DD) ou meses (MM),sempre numéricos, que podem ser utilizadas para construção de linhas de tempo mais curtas ou organizadores pessoais. Ao trabalhar com Datas, escolha apenas uma das opções para a construção da linha do tempo: Anos (YYYY), Meses (MM) ou Dias (DD). Coluna 2: **Evento**: Contendo os nomes dos eventos/acontecimentos a serem representados (máximo 12 caracteres por evento), de acordo com a data correspondente na coluna 1. Coluna 3: **Descrição**: Esta coluna contém uma breve descrição (até 20 caracteres por descrição) do evento a ser representado. Caso não haja nenhuma informação descrita, serão plotados apenas os nomes dos eventos e os respectivos períodos. Value: A função retornará a representação gráfica da linha do tempo, além de apresentar na tela de comando as informações contidas no data.frame. Caso o usuário informe no argumento save que tem interesse em salvar o gráfico, a função retornará também uma mensagem orientando o usuário em como salvar a imagem corretamente. Warnings: É necessário que as colunas estejam nomeadas exatamente como indicado, para que a função rode corretamente. Author(s): Daniela Alves Maia da Silva (daniela.alvesmaia@usp.br) Examples: Exemplo 1 ##Simulando dados para entrada em um data.frame: Data = c(1987,1991,1994,2000,2004,2007,2011,2012,2013,2015,2016,2017) Evento = c("Salvador","São Paulo","São Paulo","São Paulo","São Paulo","Diadema","Sorocaba","Europa","Brasil","São Paulo","Natal","São Paulo") Descrição = c("Nasceu","Mudou-se","Ganhou um irmão","Primeira festa","Fim da escola","Graduação","2ª Graduação","Intercâmbio","Retorno","Formada","1ª Expedição","Mestrado") dados1= data.frame(Data,Evento,Descrição) dados1 #Unindo tudo em um data.frame litem(dados1,"História de vida",TRUE) #Testando a função e seu retorno Exemplo 2 ##Simulando dados para entrada em um data.frame: Data = c(1531,1535,1549,1551,1554,1555,1573,1585) Evento = c("Cananéia","Porto Seguro","Salvador","Vitória","São Paulo","Rio de Janeiro","Niteroi","João Pessoa") Descrição = c("São Paulo","Bahia","Bahia","Espirito Santo","São Paulo","Rio de Janeiro","Rio de Janeiro","Paraíba") dados2= data.frame(Data,Evento,Descrição) dados2 #Unindo tudo em um data.frame litem(dados2,"Fundação das cidades",TRUE) #Testando a função e seu retorno Exemplo 3 ##Simulando dados para entrada em um data.frame: Data = c(14,28,30,2,3,21,4) Evento = c("Banco","Supermercado","Compras","Casamento","Viagem","Curso","Reunião") Descrição = c("Problemas cartão","Compra do mês","Roupas e sapatos","Julia e Jean","Rio de Janeiro","Libras","CEO da empresa") dados3= data.frame(Data,Evento,Descrição) dados3 #Unindo tudo em um data.frame litem(dados3,"Personal organizer",TRUE) #Testando a função e seu retorno =====Código da Função litem===== ############################### ########FUNÇÃO LITEM########### ############################### litem<-function(dados,title="",save=FALSE) ##Imput: 'dados': entrada de dados no formato data.frame; argumento 'title' permite que o usuário adicione um título à linha do tempo (opcional); argumento 'save' permite que o usuário indique se tem interesse em salvar a linha do tempo (TRUE) ou não (FALSE) { library(plotrix)##pacote que deve ser carregado para que a função seja executada corretamente ####Testando condições####### if(!is.data.frame(dados)){ ##Teste lógico para saber se o objeto de entrada é um data frame. stop("litem:'dados' deve ser um data.frame",call.=FALSE) ##Mensagem de erro caso o objeto de entrada não seja um data.frame } nrow<-nrow(dados)##Calcula o número de linhas do data.frame e atribui a um objeto if(nrow>12){##Teste lógico para verificar se o data.frame contém mais de 12 linhas de conteúdo stop("litem:'dados' deve conter um data.frame com no máximo 12 linhas")##Mensagem de erro caso o objeto de entrada apresente mais de 12 linhas } ######Organizando a linha do tempo########## x<-dados ##Atribui ao objeto x o data.frame contendo os dados de entrada x$Data<-as.numeric(x$Data)##Transforma a classe de dados da coluna 'Data' em numérica rangex<-range(x$Data)+c(-1,1)## Atribui a um objeto os valores do eixo da linha do tempo que terá como comprimento a amplitude dos valores de 'Data' +- 2 unidades texto<-title #####Plotando a linha do tempo####### layout(matrix(c(1,1),ncol=1, nrow=1), width=c(5,5))##Criação de um layout no dispositivo gráfico onde será construída a linha do tempo layout.show(1) ## Mostra o layout do painel criado par (mar=c(2,4,2,4))##Controla tamanhos das margens par(bty="n")##Oculta a caixa que é desenhada ao redor de um gráfico xrep <- rep_len(c(5), length.out=nrow(x)) ##Atribui a um objeto uma sequência de valores iniciais(x0) onde os pontos deverão ser plotados, de acordo com o comprimento do objeto de entrada xrep1 <- rep_len(c(3,1,7,9), length.out=nrow(x))##Atribui a um objeto uma sequência de valores finais (x1)onde os pontos deverão ser plotados, de acordo com o comprimento do objeto de entrada plot(x=NULL,y=NULL, xlim=c(0,10), ylim=rangex,type="n", xaxt="n",yaxt="n", xlab="", ylab="", main=texto)##Constrói um plot com os valores dos eixos ocultos onde serão plotadas as informações abline (v=5, lwd=2)##Cria uma linha de regressão que será o "eixo temporal" da linha do tempo points(x=xrep,y=x$Data, pch="", cex=1.5, col="black")##Plota os valores iniciais dos pontos(x0) que correspondem ao eixo(abline)contendo as datas points(x=xrep1,y=x$Data, pch=19, col="black")##Plota os valores finais dos pontos, de acordo com as datas segments(x=xrep, y0=x$Data, x1=xrep1, y1=x$Data)##Cria um segmento entre os valores iniciais e finais dos pontos na linha do tempo par(xpd=NA)##Indica que os plots serão cortados na região do dispositivo gráfico boxed.labels(5,y=x$Data,x$Data,col="black",font=2,bg="white",border=TRUE,xpad=1.2,ypad=1.2,srt=0,cex=0.7,adj=0.5)##Cria caixas de textos contendo as Datas dos eventos que compõem a linha do tempo, sobre o eixo temporal boxed.labels(xrep1,y=x$Data,x$Evento,col="blue",font=2,bg="white",border=TRUE,xpad=1.2,ypad=1.2,srt=0,cex=0.7,adj=0.5)##Cria caixas de textos contendo os nomes dos Eventos de acordo com a data de ocorrência text(x=xrep1, y=x$Data,labels=paste(x$Descrição,sep="\n"), cex=0.7,pos=1,col="black",font=1)##Insere abaixo do nome dos Eventos uma breve descrição. ######Testando condição de salvar linha do tempo######## if(!save=="FALSE")##Teste lógico para verificar se o usuário tem interesse em salvar sua linha do tempo { cat("Para Salvar sua linha do tempo: Maximize a janela gráfica e,no menu, vá em Arquivo > Salvar como > escolha a extensão desejada\n\n")##Caso o usuário declare "TRUE", será exibida uma mensagem na tela ao final da função indicando os passos a serem seguidos para salvar corretamente a linha do tempo dados ##Além da mensagem, serão apresentados na tela os dados contidos no objeto de entrada, utilizados na construção da linha do tempo e a representação gráfica. } else { return(x) ##Caso o usuário indique "FALSE" no argumento save, ou não indique nada (DEFAULT=FALSE), a função retornará na tela apenas os dados utilizados na construção da linha do tempo e a representação gráfica. } } ###########FIM DA FUNÇÃO################# litem(dados,"",TRUE)##Teste da função e retorno =====Arquivos adicionais===== {{:bie5782:01_curso_atual:alunos:trabalho_final:daniela.alvesmaia:codigo_da_funcao_litem.r|Código da Função litem}} {{:bie5782:01_curso_atual:alunos:trabalho_final:daniela.alvesmaia:help_funcao_litem.r|Help da Função litem}} =====Exemplos da função litem===== {{:bie5782:01_curso_atual:alunos:trabalho_final:daniela.alvesmaia:ex_1.csv|Exemplo 1}} {{:bie5782:01_curso_atual:alunos:trabalho_final:daniela.alvesmaia:ex_2.csv|Exemplo 2}} {{:bie5782:01_curso_atual:alunos:trabalho_final:daniela.alvesmaia:ex_3.csv|Exemplo 3}}