{{:bie5782:01_curso_atual:alunos:trabalho_final:a5115355:20140205_155350.jpg?200|}} ====== Leticia Sicchieri ====== Aluna de doutorado do IPEN/USP. Projeto: Utilização de novos biossensores para avaliação do risco cardiovascular. [[.:exec]] **PROPOSTA DE TRABALHO FINAL** **Plano A** Para analisar um espectro de fluorescência é necessário fazer um tratamento dos dados. Esse tratamento serve para corrigir os valores de base de intensidade, ou seja, subtrair um baseline. Isso pode ser feito através de um ajuste linear do ponto inicial e final do espectro, e a partir da equação de reta se obtém os valores da linha base para cada ponto no eixo x. Após essa subtração o ponto inicial e final ficam em zero, sendo possível em seguida comparar os espectros. A ideia da minha função será fazer a subtração desse “baseline” de cada espectro e em seguida calcular o valor da área integrada do espectro e armazenar em um data frame ou em uma matriz os valores obtidos. **Plano B** Atualmente, a quantificação do colesterol ruim (LDL) é feita a partir de uma equação que leva em consideração os valores de Colesterol Total, HDL e Triglicerídeos. O risco de desenvolver uma doença cardiovascular é pensado levando em consideração vários fatores, dentre eles: IMC, diâmetro da cintura, concentração de LDL, valor da pressão. A proposta do plano B seria uma função que retornaria de maneira simplificada e não diagnostica, se a pessoa tem um risco baixo, moderado ou alto de desenvolver doença cardiovascular, para isso a pessoa informaria o valor de colesterol total, HDL, Triglicerídeos, IMC, diâmetro da cintura e função retornaria a concentração de LDL, e qual o risco de desenvolver doença cardiovascular. Lembrando que essa função tem como finalidade apenas mostrar de maneira muito simplificada esse risco e não pode ser considerada como uma forma de se obter um diagnostico. Comentários: A proposta A está ótima. Ela está bem embasada, bem explicada, vai ser certamente útil para você e outrxs pesquisadorxs. Como ela deve ficar pronta rápido, pense em formas de incluir um pouco mais de funcionalidade: talvez algum aviso para detectar erros comuns, ou usar algum algoritmo mais interessante de [[https://en.wikipedia.org/wiki/Numerical_integration|integração numérica]] para calcular a área embaixo da curva. A proposta B está muito simples. Pelo que eu entendi, ela faria uma conta e um "if", é isso? ----//[[chalom@cecm.usp.br|André Chalom]]// **Proposta ajustada** A proposta A retornará alem da área integrada, o valor máximo de emissão e o comprimento de onda dessa intensidade, e talvez plotar o espectro de emissão. Para a proposta B, ela faria a conta, e para os outros fatores ela iria ver se a pessoa tem um item acima do permitido ou mais e diria dependendo disso qual seria o risco, pensei assim, se o colesterol for acima do permitido ele armazena 1, se o IMC for acima do normal ele soma 1 ao que já foi armazenado do anterior, se a pressão for normal ele não faz nada e no final ele irá ver dependendo desse valor qual o risco. **Plano A** HELP DA FUNÇÃO area package:unknown R Documentation Função para subtrair straight line de espectros de fluorescência e calcular a área integrada linear e mostrar intensidade de pico e seu comprimento de onda. Descrição A função área serve para subtrair o straight line de espectros de fluorescência a partir de um data.frame com duas colunas, na primeira os valores do eixo x (comprimento de onda) e na segunda os valores do eixo y (Intensidade) do espectro. Primeiro a função irá encontrar o ponto máximo de intensidade (pico de emissão) e a partir dele encontrar os pontos de mínimo do inicio e do final do espectro. Com esses pontos será obtido o baseline que será subtraído de todo espectro. Por fim o programa irá retornar um data.frame com o valor de pico de emissão , o comprimento de onda desse pico e o valor da área integrada. Uso: area(x) Argumento: x: um data.frame com duas variáveis, a primeira o eixo x do gráfico e a segunda o eixo y do gráfico. Detalhes: A função irá calcular uma função de reta a partir dos pontos de mínimo do inicio e do final do gráfico e irá gerar a partir dos coeficientes do ajuste os novos valores de y. Em seguida, esses novos valores serão subtraídos dos valores de y iniciais, gerando um novo conjunto de dados. Por fim a função irá calcular a área integrada a partir de áreas de trapézios, e irá mostrar a intensidade de pico e em qual comprimento de onda está esse pico. Valor: A função retornara um data.frame com as seguintes informações nessa ordem: lambda: Comprimento de onda do pico de emissão, maximum: valor de intensidade máxima desse pico, area: valor de área integrada. Warning: Os dados devem conter a mesma quantidade de valores nas duas colunas, ou a função não irá rodar corretamente. Autor: Leticia Bonfante Sicchieri leticiabonfante@gmail.com Referencia: Calculo de área por trapézios: http://www1.univap.br/spilling/CN/CN_Capt6.pdf Exemplo: Utilizando um espectro de fluorescência; Carregar o conjunto de dados do arquivo txt chamado exemplo.txt area(exemplo): lambda maximum area 486 258773.6 18263544 Código da função area = function(x) { colnames(x)[1]="x1" #troca o nome da coluna para facilitar colnames(x)[2]="y1" #troca o nome da coluna para facilitar maior=0 #cria um vetor maior e armazeno 0 nele lambda=0 #cria um vetor lambda e armazeno 0 nele pos=0 #cria um vetor pos e armazeno 0 nele for (i in 1:length(x$y1)) # nesse for ele encontra o maior valor de y e armazena o numero em maior e o valor de x em lambda e em pos a posição desses valores { if (x[i,2]>maior) { maior=x[i,2] lambda=x[i,1] pos=i } } menor1=maior #cria um vetor menor1 e guarda o valor que estava no vetor maior menor2=maior #cria um vetor menor2 e guarda o valor que estava no vetor maior lambda1=0 #cria um vetor lambda1 e armazena 0 lambda2=0 #cria um vetor lambda2 e armazena 0 for (i in pos:length(x$y1)) #nesse for ele ira procurar o menor valor de y a partir do ponto do maior valor e ira guardar esse valor em menor1 e o valor de x correspondente em lambda1 { if (x[i,2]maximum) { maximum=val.final[i,2] lambda=val.final[i,1] } } base=rep(NA, length(val.final$x2)-1) #cria um vetor com NAs for(i in 1:length(val.final$x2)-1) # faz um for para calcular o valor das áreas { base[i] = val.final$y2[i]+val.final$y2[i+1] #soma os valores de y a soma das bases para o cálculo da área por um trapézio. } base.1=data.frame(base) # coloca os valores calculados anteriormente em um data frame cada.area=0.5*(diff(val.final$x2[-1])*base.1) # calcula a área de cada trapézio area = sum(cada.area) # soma as áreas dos trapézios resul=data.frame(lambda,maximum,area) #coloca os resultados a serem mostrados em um único data.frame return(resul) } {{:bie5782:01_curso_atual:alunos:trabalho_final:a5115355:exemplo.txt|}} {{:bie5782:01_curso_atual:alunos:trabalho_final:a5115355:funcaofinal.r|}}