Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2018:alunos:trabalho_final:vinyborges:start

Vinicius Magalhães Borges

20180324_142303.jpg

Doutorando do Programa de Genética do IB-USP.

A tese do meu projeto é intitulada “Estudos de Associação Baseados em Famílias dos Fenótipos Obesidade e Hipertensão em Indivíduos Afro-Descendentes de Remanescentes de Quilombos”.


I. Página de exercícios:

respostas_aula1.r

respostas_aula4.r

respostas_aula5.r

respostas_aula7a

respostas_aula7b

respostas_aula8

respostas_aula9.2


II. Propostas

Proposta A: Escolhendo o melhor combustível

Introdução

Atualmente quase 95% dos carros novos vendidos no Brasil são movidos a álcool ou gasolina, denominados flex. O primeiro carro movido a álcool comercialmente vendido no mundo foi o Ford modelo T, produzido entre 1908 e 1927 (HUNT, 1981). Usando a tecnologia criada por Ford e aperfeiçoando os motores à demanda e realidade do Brasil, o CTA (Centro Técnico Aeroespacial), braço científico da aeronáutica brasileira, lançou adaptações no motor a combustão a gasolina comumente utilizado no Brasil em 1975, despertando interesse e apoio do então presidente Ernesto Geisel que por sua vez lançou o Programa Nacional do Álcool. O programa foi um sucesso e muitos carros movidos apenas a álcool foram lançados à época, mas devido a baixa do preço do petróleo e, consequentemente da gasolina, aliado com a melhor autonomia deste combustível o álcool perdeu o apelo e carros apenas a álcool foram esquecidos. Os carros a álcool até resistiram durante os anos 1990 e chegaram a cruzar a virada do século, mas eram vendidos por encomenda e a demanda era baixíssima, finalmente sucumbindo em 2003, quando a Volkswagen lançou o primeiro modelo flex brasileiro, o Gol.

Objetivo da função

A função irá apontar qual a melhor opção para abastecer carros com motores flex.

Entrada de dados

O “modo simples” da função irá requerer os valores do litro do álcool e da gasolina no posto a escolha do usuário. O “modo avançado” poderá ser utilizado ao ser informado, em adição, 4 valores quantitativos correspondentes ao consumo do carro do usuário com gasolina e álcool, na estrada e na cidade. Em caso de viagem, será solicitado a cidade de origem e destino.

Argumentos

  • ALC – valor do álcool por litro.
  • GAS – valor da gasolina por litro.
  • CAC – Consumo do carro utilizando álcool em trecho urbano.
  • CAE - Consumo do carro utilizando álcool em viagens.
  • CGC – Consumo do carro utilizando gasolina em trecho urbano.
  • CGE - Consumo do carro utilizando gasolina em viagens.

Saída de dados

Quando usada com os argumentos mínimos obrigatórios, a função irá retornar o valor qualitativo de qual o combustível indicado e gráficos de rendimento para cada combustível. Quando usada com todos os argumentos disponíveis, a função irá retornar com o que a entrada básica já resulta, mais valores quantitativos da distância a ser percorrida, quantidade de combustível necessária para tal.

Referências

Hunt, V, D, The Gasohol Handbook, Industrial Press Inc., 1981, pp 9, 420,421, 442

Comentários Lucas Teixeira

Oi, Vinicius!
Meu nome é Lucas e sou um dos monitores responsáveis por dar uma olhadinha nas suas propostas de trabalho final aqui do curso.

Sobre sua proposta A, de forma geral, confesso que não estou certo de tê-la entendido completamente com base na forma como você a apresentou. Pensando no modo simples da função, ficou difícil entender que gráfico ela retornaria com base nesses únicos valores fornecidos e também qual a utilidade dele, porque, na prática, dividir o preço do álcool pela gasolina ali na hora do próprio abastecimento é uma forma rápida de saber se vale a pena abastecer com um combustível ou com outro. Além disso, não entendi também quando a função seria rodada em um modo ou em outro, ou seja, como você vai fazer para tornar os argumentos do modo avançado não obrigatórios. Por falar em modo avançado da função, não ficou claro como a função vai calcular a distância entre as cidades para poder retornar a quantidade de combustível necessária e o que seriam mais valores quantitativos da distância a ser percorrida. Além disso, existe uma opção para a/o motorista que sua função não considera, que é o caso do veículo ser usado tanto para trechos urbanos, quanto para viagens.
Seria legal, então, se você pudesse fazer duas coisas para que possamos avaliar sua proposta melhor:
1. Explicar melhor qual a aplicabilidade de sua função e o que torna ela legal para motoristas por aí, deixando mais claro o que ela retorna.
2. Colocar aqui um pseudo-código, isto é, o passo-a-passo do que sua função vai fazer.

Qualquer coisa, só mandar mensagem!

Abraços,
Lucas

Resposta:

Olá Lucas,

O gráfico inicial seria a autonomia do carro com 50L (tamanho médio dos tanques) de álcool e com gasolina, em colunas (tanque cheio (50L) x rendimento). A ideia da função é, de forma básica, apontar com um gráfico a melhor opção de combustível e, caso o usuário deseje adicionar mais informações, obter autonomia em estrada e na cidade, quantos litros e paradas serão necessárias até o destino a depender do combustível. As distâncias entre cidades serão obtidas a partir de uma arquivo que eu criarei entre as distâncias em km entre as capitais do país (em caráter de teste, entre capitais, ainda não consegui pensar numa forma eficiente de fazer isso entre quaisquer cidades). Se o usuário for dirigir dentro de cidades e em estrada, eu posso fazer a media da autonomia.

Pseudo codigo

Eu não consegui pensar numa forma de fazer os argumentos entrarem dentro de uma função só, então pensei em dividir em duas…

Modo simples: -Cria os objetos ALC e GAS. -Dentro da função F1, multiplica ALCx50 e GASx50 pra em seguida plotar em colunas, num mesmo gráfico.

Modo avançado: -Cria os objetos ALC, GAS, CAE, CAC, CGC, CGE, alem de CID1 (nome da cidade de origem e CID2 (nome da cidade de destino). Se o uso for urbano, CID1 será igual a CID2

-Dentro da função F2, multiplica ALCx50 e GASx50 pra em seguida plotar em colunas, num mesmo gráfico. Retorna a distância entre as cidades, a quantidade de combustível necessária para o trajeto se for viagem e o número de paradas necessárias para reabastecimento para cumprir o trajeto.

Comentários Lucas Teixeira

Oi, Vinicius!
Obrigado pela resposta

Depois de entender melhor sua função B, eu confesso que achei ela mais interessante. Acho que ela tem mais potencial de otimizar um processo importante, pelo que você descreveu, e também vai fazer você usar mais habilidades aprendidas durante o curso. Por isso recomendo ficar com a proposta B.

Abraços,
Lucas

Proposta B: Checando parâmetros de amostras de DNA e calculando volumes

Introdução

Parte importante do preparo de amostras de DNA para realização de amplificação (PCR, por exemplo) ou para genotipagem (array de SNPs, por ex) é a padronização. Independente do objetivo e do protocolo, existem parâmetros exigidos para assegurar a qualidade e pureza da amostra.

Objetivo da função: Otimizar o tempo na padronização das amostras ao indicar se a amostra está adequada ou não para prosseguir com o protocolo, bem como calcular o volume final a ser utilizado considerando possível diluição em buffer.

Entrada de dados

Será necessário carregar um objeto data frame com o nome das amostras, as concentrações de DNA em ng/uL e os valores das razões de pureza 260/230 e 260/280, obtidos através de quantificadores de DNA.

Argumentos

  • X – data frame com 4 colunas (nome da amostra, razão 260/230, razão 260/280, concentração em ng/uL).
  • PUR1 – Range da pureza para a razão 260/230. Valor default será 1.8~2.0.
  • PUR2 – Range da pureza pra a razão 260/280. Valor default será >2.0.
  • VOL – Volume final a ser utilizado por amostra. Valor default será 55 uL.
  • CONC - Concentração final a ser utilizada por amostra. Valor default será 15 ng/uL.

Saída de dados

Será devolvido ao usuário informações em data frame com a aprovação ou não das amostras. Em caso negativo, será apontado o parâmetro inadequado. Em caso positivo será apontado o volume de amostra a ser utilizada e o volume de buffer necessário.

Comentários Lucas Teixeira

Oi, Vinicius!
Assim como em sua proposta A, acho que você poderia apresentar melhor algumas coisas para ajudar a gente a entender e avaliar melhor sua proposta de função B. Aqui faço o mea culpa e admito que parte de minha falta de entendimento tem origem no meu desconhecimento de aspectos “genéticos” de sua função, mas a outra parte pode ser resolvida com uma apresentação do pseudo-código da sua função, que deve dar mais clareza ao processo que ela irá otimizar. Por isso, gostaria de pedir a você, novamente, duas coisas:
1. Explicar um pouco melhor termos de cunho mais técnico, como o que é array de SNPs, o que é essa padronização necessária e que parâmetros são necessários para avaliar a qualidade dessas amostras.
2. Colocar um pseudo-código com o passo-a-passo da sua função, indicando o que ela deverá fazer para chegar ao resultado pretendido, o que inclui o objeto retornado.

Abraços,
Lucas

Olá novamente,

Array de SNPs é uma técnica de varredura genomica, mas especifica para identificação de bases nucleotidicas em posições que frequentemente apresentam opções de bases, chamado de polimorfismo. De forma simples é uma forma de se obter o genotipo de SNPs espalhados por todo o genoma do indivíduo. É uma técnica bastante utilizada em estudos de doenças quando se tem populações específicas ou não, sendo crucial para realização de análise de ligação e estudos de associação (técnicas que tentam descobrir onde está o gene responsável pela condição). Para que essa varredura genomica seja eficaz, as empresas que executam a análise pedem que a amostra de DNA extraida esteja dentro de certos padrões, com uma concentração adequada, volume adequado, sem contaminação por proteina ou outras moléculas. Checar se a amostra está ou não obedecendo esses parâmetros e calcular se e em quanto a alicota precisa ser diluída é uma etapa que leva bastante tempo, daí minha ideia de fazer uma função pra isso. Este é apenas um exemplo, a padronização de amostras de DNA é necessária para realização de amplificação por PCR, por exemplo. Amostras contaminadas (com razões de pureza inadequadas) não amplificam. Em todos os casos, avaliar se a amostra de DNA está ou não dentro dos parâmetros requeridos é etapa crucial em qualquer técnica de manipulação de DNA.

Pseudo Código

-Criação dos objetos PUR1, PUR2, VOL e CONC, atribuindo a cada um o valor informado ao chamar a função. Se o usuário não informar os valores dos argumentos serão atribuídos os valores default.
-Criação dos objetos PUR1V, PUR2V, CONCV, CONCI e VOLI com NAs.
-Entrada do data.frame X, com os valores de concentração e razões de pureza por coluna, linha a linha com o nome da amostra.
-Inicia um for, onde j será cada linha de X.
-Compara os valores das posições da linha carregada j com os valores de limite atribuídos aos objetos PUR1, PUR2 e CONC. Atribui o resultado de cada comparação a 3 novos objetos PUR1V, PUR2V e CONCV, sendo valores booleanos de TRUES e FALSES pra cada objeto.
-Retorna um data frame com o nome da amostra obtido da posição 1 de j, confere se PUR1V, PUR2V e CONCV são todos TRUE, se for retorna na posição 2 “amostra adequada”, caso contrário retorna “amostra inadequada devido a x”, onde x será o(s) objeto(s) com valor FALSE.
-Inicie um if, onde se PUR1V, PUR2V e CONCV todos TRUE, obtém o valor de concentração da posição referente ao mesmo em j (linha carregada) e atribui a CONCI, calcula Vi x Ci = Vf x Cf (onde Ci será CONCI , Vf será VOL, Cf será CONC) e atribui a VOLI.
-Retorna VOLI na posição 3 do data frame.
-Calcula 55-VOLI e retorna na posição 4 do data frame (correspondente a quantidade de buffer a ser adicionada a alicota).

Comentários Lucas Teixeira

Oi, Vinicius!
Obrigado pela resposta

Como disse ali em cima, eu pude entendê-la melhor agora e acho que ela é mais interessante dado o objetivo do trabalho final do curso e o próprio objetivo da função. Recomendo ficar com ela, mas caso queira conversar melhor ainda sobre ela ou sobre a outra função, só escrever!

Abraços,
Lucas

III. Trabalho Final

Link para a função → AQUI

Link para o help da função → AQUI

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