Você sabe comparar duas sequências de DNA, usando algoritmo?

Você achava que trabalhar com DNA era coisa de biólogo ou médico ? Já sei… sou analista de sistema não preciso estudar nada disso ! Tenho uma boa notícia, você estava mais errado do que imaginava…

A computação está se integrando e fazendo parte das rotinas diárias de diversas áreas como a área de saúde. Existem diversas ferramentas, bancos de dados e algoritmos aplicados a problemas dessa área. Alguns problemas são simples teoricamente mas na prática…

UMa lembrança das suas aulas de biologia no ensino médio…

Para começar você lembra das aulas de Introdução a genética do ensino médio. Onde o professor falava que o DNA era formado por 4 bases nitrogenadas: A (Adenina), T (Timina), C(Citosina) e G (Guanina). Naquele momento você provavelmente decorou essa informação para a prova e pensou pra que vou usar isso na minha vida rsrsrs… Pois bem, muito basicamente falando essas strings revolucionaram o mundo. Imagina então duas sequência de DNA…

Sequência A:

gatgggtgcgagagcgtcagtattaagcgggggaaaattagatgtatgggagaaaattcg

Sequência B:

caagtgagcgtatgaagcggagagcgtcaggggaaaattagatgtatggcagatggttcg

Como usando computação você poderia comparar essas duas sequências e quantificar o quanto elas são similares ? São da mesma espécie ? Possuem o mesmo ancestral em comum ? Simples resolver esse problema não é mesmo ? Só comparar duas strings talvez com um simples:

if (seqA.equals(seqB)){

}

Bem… teoricamente seria só isso. Mas com todos os conceitos e eventos que podem ocorrer com um DNA, não dá para simplesmente verificar se a string “CANETA” é igual a string “CANETA”. O primeiro problema que dificulta isso é que o DNA sofre mutações, inserções e deleções na sua sequências. Então, basicamente você pode ter a mesma sequência de diversas formas:

CANETA               NETA              CNETA              CNT              MANETA             CANETADA

Todas as opções do exemplo anterior são derivados da mesma palavra “CANETA”, mas com inserções, deleções e mutações de letras. Este desafio ficou mais difícil do que você imaginava não é mesmo ? Mas calma, irei te ajudar rsrsrs. Existem diversos outros eventos que ocorrem no DNA que interferem diretamente na comparação, mas não irei detalhar muito nesse post. Para comparar strings foram desenvolvidos diversos algoritmos de alinhamento. A idéia inicial desse tipo de algoritmo é igualar todas as strings para ser possível quantificar a igualdade e a diferença entre elas. Basicamente todas elas são alinhadas utilizando matrizes de score para pontuar igualdades e diferenças, afim de ao final obter um arquivo com esse resultado:

CANETA--
--NETA--
C-NETA--
C-N-T---
MANETA--
CANETADA

Agora você pode comparar todas as posições e ver o quanto de igualdade e diferença você tem entre as palavras. No DNA o princípio é o mesmo, porém existem diversas outras características que precisam ser avaliadas. Segue abaixo uma lista de algoritmos para alinhar sequências de DNA e os artigos com a descrição de como eles funcionam…

ALGORITMOS DE ALINHAMENTO DE SEQUÊNCIAS

Stephen F. Altschul, Warren Gish, Webb Miller, Eugene W. Myers, David J. Lipman, Basic local alignment search tool, Journal of Molecular Biology, Volume 215, Issue 3, 1990, Pages 403-410, ISSN 0022-2836, http://dx.doi.org/10.1016/S0022-2836(05)80360-2.
(http://www.sciencedirect.com/science/article/pii/S0022283605803602)

Langmead, B., Trapnell, C., Pop, M., & Salzberg, S. L. (2009). Ultrafast and memory-efficient alignment of short DNA sequences to the human genome. Genome Biology, 10(3), R25. http://doi.org/10.1186/gb-2009-10-3-r25. (https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2690996/pdf/gb-2009-10-3-r25.pdf)

Edgar, R. C. (2004). MUSCLE: multiple sequence alignment with high accuracy and high throughput. Nucleic Acids Research, 32(5), 1792–1797. http://doi.org/10.1093/nar/gkh340. (https://www.ncbi.nlm.nih.gov/pmc/articles/PMC390337/pdf/gkh340.pdf)

Thompson, J. D., Higgins, D. G., & Gibson, T. J. (1994). CLUSTAL W: improving the sensitivity of progressive multiple sequence alignment through sequence weighting, position-specific gap penalties and weight matrix choice. Nucleic Acids Research, 22(22), 4673–4680. (https://www.ncbi.nlm.nih.gov/pmc/articles/PMC308517/pdf/nar00046-0131.pdf)

pra que isso ?

Lembra aquele episódio de Dexter que ele comparou o DNA da cena do crime com um banco de dados de DNA de criminosos ? Ou aquele episódio de CSI que o cara acha um fio de cabelo na cena do crime e compara com o DNA dos suspeitos para ter uma maior certeza de quem é o culpado ? Então… eles não são futuristas assim desde 1990 que é o ano do paper do BLAST. Existem diversos algoritmos atualmente para quantificar o percentual de identidade e similaridade entre sequências de DNA e RNA. Isso é computação aplicada !

alinhamento de sequências usando o clustal w…