Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2013:alunos:trabalho_final:anna.abrahao:start

Anna

foto_wiki.jpg

Eu me chamo Anna Abrahão, sou doutoranda em Ecologia na Unicamp. Meu projeto se intitula “Estratégias de aquisição de nutrientes de plantas de campos rupestres de cerrado”. Minha motivação para fazer a disciplina é refazer algumas análises da dissertação de mestrado, para publicação, bem como delinear as análises do doutorado.

Meus exercícios

Proposta de Trabalho Final

Plano A

Os valores de δ15N (medida da razão 15N/14N) são integradores do ciclo do nitrogênio. Cada etapa do ciclo de N tem um fator de discriminação, que gera uma assinatura isotópica (δ15N) do produto diferente da do substrato. Consequentemente, cada forma de nitrogênio no solo (amônio, nitrato, N orgânico) possui uma assinatura isotópica característica. Dessa forma, é possível estudar mecanismos de aquisição e uso de N pelas plantas a partir de isótopos estáveis de nitrogênio (14N e 15N). Esses valores nos tecidos vegetais dependem dos mecanismos de aquisição, translocação e perda de N, bem como da(s) fonte(s) nas quais o N é adquirido. Como para a maioria das espécies (exceto epífitas, carnívoras, e plantas com associações com organismos fixadores de N atmosférico) a maior fonte de N é o solo, a subtração do valor de δ15N do solo do valor de δ15N foliar de uma espécie indica muito sobre os mecanismos de aquisição e uso desse nutriente: Δδ15N= δ15N foliar- δ15N do solo. Esse índice nos permite comparar o uso de N em de diferentes espécies em diferentes locais retirando o efeito do solo. A função que eu pretendo construir deverá me informar o Δδ15N para cada espécie coletada, e fazer um gráfico de Δδ15N em função do δ15N do solo. Usualmente, os valores de condições do ambiente e das espécies são anotados em matrizes diferentes. O que eu tenho são os valores de δ15N foliar por indivíduo em uma matriz e os valores de δ15N de solo em outra matriz, ambas com uma coluna com a localidade. As entradas serão então as matrizes de (1) δ15N foliar com as colunas de local, espécie, indivíduo (dentro de cada espécie) e δ15N foliar; e (2) local e δ15N do solo. O output será então composto por um dataframe igual ao da matriz (1) ao qual foi adicionada uma coluna com os valores de Δδ15N; por três boxplots, um de δ15N foliar por local, um de δ15N do solo por local e o terceiro de Δδ15N por local; além dos gráficos de Δδ15N em função do δ15N do solo e do δ15N foliar.

Plano B

A análise de compostos em UPLC-MS nos permite identificar e quantificar compostos, comparando-os com uma amostra padrão de composição e concentração conhecidas. A partir do tempo de retenção na coluna de cromatografia, é possível identificar o composto, e a área do pico no tempo de retenção determinado é proporcional à concentração deste composto. A minha proposta é que inserindo-se dados de uma curva padrão e de áreas de pico de amostras, seja possível determinar a concentração das amostras. As matrizes de entrada serão (1) dados da curva padrão que tenham dados de concentração e tempos de retenção respectivos, e (2) Dados de área do pico. A partir dos dados da curva padrão serão calculados o intercepto e a inclinação da reta. Com esses parâmetros, serão calculadas as concentrações com base nas áreas do pico da matriz 2. É possível que sejam vários compostos, e que haja várias curvas padrão e que cada curva padrão seja usada para calcular a concentração de um composto diferente.

Comentário - Anna

Anna,

A sua proposta A, pelo que eu entendi envolve juntar duas fontes de informações que estão em arquivos diferentes, fazer uma conta de menos e voilà! E o gráfico que você quer que ele te retorne não parece ser muito informativo…

Já a sua proposta B parece bem mais desafiadora! Você pode até tentar encaixar a sua idéia de pedir pro R retornar algo gráfico nela…

Ale

Concordo com a Anna que a proposta B parece mais desafiadora, mas acho que se vc. se sente mais confortável com a proposta A, fique com ela. — Alexandre Adalardo de Oliveira 2013/03/24 11:18

Código da função (Plano B)

Croma<-function(dados, padrao)
{
  cat("\n \t \t \t O primeiro argumento é o dataframe com cada composto em 
      uma coluna e com as áreas dos picos observadas nas linhas. 
      O nome de cada composto deve vir no cabeçalho de cada coluna. 
       \n 
      O segundo argumento é um dataframe com as concentrações das soluções 
      padrão na primeira coluna, e as áreas dos picos correspondentes a 
      cada composto nas colunas seguintes \n")
  dados<-as.data.frame(dados)
  padrao<-as.data.frame(padrao)
  
  #Verifica se foi inserida a mesma quantidade de compostos na planilha de dados e na de curvas-padrão
  if(ncol(dados)!=ncol(padrao)-1)
    {
      stop("\t \t \t \n O numero de compostos deve ser o mesmo para o dataframe de dados e o das curvas-padrão", call.=FALSE)
    }
  
  #Verifica de o nome dos compostos está igual nas planilhas de dados e na de curvas-padrão
  for(i in 1:ncol(dados))
    {
      if(colnames(dados)[i]!=colnames(padrao)[i+1])
        {
          stop("\n A ordem e o nome dos compostos devem ser os mesmos na planilha de dados e na de curvas-padrão")
        }
    }
  
  #Verifica, para cada composto, se há valores de áreas de pico observadas maiores que as da planilha curvas-padrão
  maior<-matrix(NA, ncol=ncol(dados), nrow=1)
  colnames(maior)<-colnames(dados)
  maior<-as.data.frame(maior)
  for(i in 1:ncol(dados))
    {
      if(max(dados[,i], na.rm=T)>max(padrao[,i+1], na.rm=T))
        {
          maior[1,i]<-TRUE
        }
      else
        {
          maior[1,i]<-FALSE
        }
      }
  cat("\n Cuidado, há valores de concentração maiores que o maior
              valor de concentração da curva padrão nos compostos", dimnames(maior[which(maior==TRUE)])[[2]])
  
  #Gera matriz com intercepto, inclinação e r2 das curvas padrão de cada composto
  curvas<-matrix(NA, ncol=ncol(padrao), nrow=3)
  curvas<-as.data.frame(curvas)
  curvas[,1]<-c("Intercepto", "Inclinacao", "r2")
  colnames(curvas)<-c("Coeficientes", colnames(dados))
  for(i in 2:ncol(padrao))
    {
      curvas[1,i]<-coef(lm(padrao[,i]~padrao[,1]))[[1]]#Intercepto
      curvas[2,i]<-coef(lm(padrao[,i]~padrao[,1]))[[2]]#Inclinação  
      curvas[3,i]<-summary(lm(padrao[,i]~padrao[,1]))[8]#Coeficiente de correlação
    }
  
  #Verifica se as curvas padrão tem um bom ajuste (r2>0.7)
  ruim<-matrix(NA, ncol=ncol(dados), nrow=1)
  colnames(ruim)<-colnames(dados)
  for(i in 2:ncol(curvas))
    {
      if(curvas[3,i]<0.7)
        {
          ruim[1,i-1]<-TRUE
        }
      else
        {
          ruim[1,i-1]<-FALSE
        }
    }
  if(sum(ruim)>=1)
    {
      ruim<-as.data.frame(ruim)
      stop("\n \n Atenção, os seguintes compostos tem curvas padrão ruins (com r2<0.7):", dimnames(ruim[which(ruim==TRUE)])[[2]])
    }
  
  #Calcula a concentração de cada composto, com base nas curvas-padrão
  concentracao<-matrix(NA, ncol=ncol(dados), nrow=nrow(dados))
  concentracao<-as.data.frame(concentracao)
  colnames(concentracao)<-colnames(dados)
  for(i in 1:ncol(concentracao))
    {
      concentracao[,i]<-(dados[,i]-curvas[1,i+1])/curvas[2,i+1]
    }
  cat("\n \n \n A concentração dos compostos é a seguinte: \n \n")
  return(list(concentracao))
}

Página de ajuda

Croma{sem pacote}				                                        	Documentação do R

Descrição

	Calcula concentração de compostos a partir de dados de área do pico para cromatografia, ou abosrbância para 
        espectrofotômetro, com base em uma curva padrão.

Uso

	Croma(dados, padrao)

Argumentos

	dados	um objeto do R, por exemplo vetor, matriz ou data frame com cada composto em uma coluna e com as áreas dos picos
                observadas nas linhas. O nome de cada composto deve vir no cabeçalho de cada coluna.
	padrao	um objeto do R, por exemplo matriz ou data frame com as concentrações das soluções padrão na primeira coluna, e
                as áreas dos picos correspondentes a cada composto nas colunas seguintes

Detalhes

	O objeto padrao deve ser uma matriz ou um data frame com pelo menos duas colunas. A primeira coluna sempre tem as 
        concentrações dos compostos das amostras padrão e as seguintes tem os valores lidos de áreas de pico ou de valores de 
        absorbância.

	O objeto dados possui apenas as colunas com as leituras de área de pico ou absorbância, a partir das quais serão 
        calculadas as respectivas concentrações.

	A ordem, a quantidade e grafia dos compostos deve ser a mesma no objeto dados e no objeto padrao.

	A função alerta quando a curva padrão não tem um bom ajuste, com r2<0.7, mas roda a análise.

	A função alerta se há valores de leitura dos dados maiores que as leituras da curva padrão.

Valor

	A função Croma retorna uma lista com um composto em cada coluna, cada leitura de concentração em uma linha e o nome do
        composto no cabeçalho.
	 

Autor(es):

    Anna Abrahão    
    Estudante de Doutorado em Ecologia. Universidade Estadual de Campinas, Campinas, Brasil.

Exemplos:

 	#Matriz de dados com NAs
	matrix.na<-matrix(sample(c(rep(NA, 17), runif(483, 0, 100))), ncol=4)
	colnames(matrix.na)<-c("A", "B", "C", "D")
	dados<-matrix.na

	#Matriz de dados sem NAs
	matriz.picos<-matrix(runif(500, 0, 100), ncol=4)
	colnames(matriz.picos)<-c("A", "B", "C", "D")
	dados<-matriz.picos

	#Matriz de padrões certinha
	con<-c(seq(from=0, to=10, by=2))
	matriz.padrao<-matrix(c(con, con*10, con*7, con*4, con*6), ncol=5)
	colnames(matriz.padrao)<-c("Concentracao", "A", "B", "C", "D")
	padrao<-matriz.padrao

	Croma(matriz.picos, matriz.padrao)
	Croma(matrix.na, matriz.padrao)

	#Matriz de padrões esculhambada
	con<-c(seq(from=0, to=10, by=2))
	matriz.esc<-matrix(c(con, runif(24,0,100)), ncol=5)
	colnames(matriz.esc)<-c("Concentracao", "A", "B", "C", "D")
	padrao<-matriz.esc

	Croma(matriz.picos, matriz.esc)
	Croma(matrix.na, matriz.esc)

Arquivos para baixar

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