Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2017:alunos:trabalho_final:daniela.alvesmaia:start

Daniela Alves Maia da Silva

dsc_1198.jpg

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. 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 “<LDM” para a interpretação dos resultados.

FUNÇÃO - CROMATRANS (x, FM, rmNA=TRUE)

Onde:

X= data frame contendo os dados a serem corrigidos

FM= fator de multiplicação utilizado na análise. Caso já tenha sido aplicado no equipamento, indicar como 1.0.

rmNA= TRUE remove da planilha os dados faltantes (NAs)

Objeto de entrada: Um data frame contendo a identificação dos compostos de interesse na primeira coluna chamada “compostos”, a segunda coluna chamada “branco” contendo as concentrações caso alguma contaminação tenha sido observada, a terceira coluna chamada “LDM”, contendo os valores correspondentes aos limites de detecção para cada composto e as demais colunas identificadas pelos nomes das amostras, apresentando as concentrações obtidas para cada composto.

Objeto de saída: O objeto de saída será uma tabela apresentando a mesma estrutura do objeto de entrada porém com os valores devidamente corrigidos. Após a aplicação do LDM, os valores serão mantidos caso sejam maiores ou descartados e substituídos por “<LDM” caso sejam inferiores ao valor determinado. Essa tabela poderá ser salva como um arquivo externo, em formato Word, utilizando o pacote RMarkdown. A tabela apresentará também o somatório dos compostos encontrados, por amostra, que será plotado em histogramas.

PROPOSTA B - FUNÇÃO LITEM()

MOTIVAÇÃO E JUSTIFICATIVA

Linhas do tempo são imagens gráficas úteis para representação de acontecimentos sequenciais e que são amplamente utilizadas nas mais diversas áreas de conhecimento. A função proposta cria uma linha do tempo a partir de um objeto de entrada contendo datas e nomes dos eventos a serem representados, tendo como base o gráfico de meta-análise modificado.

FUNÇÃO - LITEM(x, title=” ”, points=, save=””)

Argumentos

x= objeto contendo os dados;

title= o usuário indicará um título para a linha do tempo. Caso não escreva nada, o argumento tem como DEFAULT a ausência de um título;

points= o usuário indicará o número de eventos que serão plotados na linha do tempo (correspondente ao número de linhas), sendo este um número que varia entre 2 e 20;

save= o usuário informa um nome que será utilizado para salvar a linha do tempo construída como uma imagem gráfica na extensão png.

Objeto de Entrada: data frame contendo as informações a serem utilizadas na construção da linha do tempo de modo que a primeira coluna seja nomeada como “Pontos”, e as linhas sigam como P1:Pn; a segunda coluna seja nomeada como “Data” e corresponda às datas de ocorrência dos eventos, a terceira coluna seja nomeada como “Evento” e apresente os nomes dos eventos e a quarta coluna seja nomeada como “Descrição”, onde o usuário poderá apresentar uma breve descrição do evento que aparecerá junto ao nome.

Objeto de Saída: uma representação gráfica da linha do tempo construída (algo próximo da imagem abaixo) que será salva como um arquivo de imagem na extensão .png, cujo nome do arquivo será o nome informado no argumento save da funçã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!

img_20170601_135127.jpg

(*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

Exemplos da função litem

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