Como alinhar a vida - passo-a-passo
Já sabemos que a informação para formar os organismos (a informação genética) está "escrita" no genoma com quatro letras: A, C, T e G (as quatro bases nucleotídicas que formam o DNA). Mas como comparar sequências de DNA? Como medir a similaridade genética entre indivíduos e espécies? Uma solução simples é alinhar as sequências e medir as diferenças.
Alinhamento de sequências é um problema onde busca-se encontrar o menor número possível de mudanças em uma sequência X para transforma-lá em Y. Para a genética, estas mudanças na fita de DNA são as mutações, onde quanto menor o número mais próximo (aparentadas) são as sequências.
Imagine que você está estudando a sequência X (TCCGA) e deseja comparar a sequência Y (TCGAA). Alguns alinhamentos possíveis são:
(1) TCCGA (2) TCCGA. (3) TCCGA. (4) TCCGA.... ||**| || || *||| * TCGAA TC-GAA .TCGAA ....TCGAA legenda: mismatch * match | gap -
Qual a melhor solução? Para escolher o melhor alinhamento, vamos pontuar as edições e escolher o maior score. Simplificando, você têm 3 possíveis edições:
1- match (score +1) - quanto as bases são identicas. 2- mismatch (score -1) - quando as bases diferem. 3 - gap (score -1) - quando inclui um espaço em alguma das sequências.
Com este sistema, podemos pontuar os alinhamentos acima como:
(1) 3*match + 2*mismatch = 1 (2) 4*match + 2*gap = 2 (3) 3*match + 2*gap + 1*mismatch = 0 (4) 8*gap + 1*mismatch = -9
Desta forma o melhor alinhamento seria (2) com score de 2.
Este sistema simples de pontuação nos permite pontuar, ranquear e comparar os diferentes alinhamentos e decidir o mais provável (com menor número de mutações/edições). Alinhadores modernos diferenciam a transição entre letras com pontuações diferentes (por exemplo, é muito mais provável um A mudar para T, do que C ou G) e abertura de gaps da extensão.
O problema do alinhamento de sequências não era comparar os resultados, mas sim identificar todos as possíveis soluções para escolher a melhor. Em 1970, Needleman & Wunsch publicaram seu algoritmo (vamos entender aqui como passo-a-passo) para o alinhamento de sequências.
Para encontrar a melhor solução, o algoritmo representa o alinhamento como uma tabela de N+1 colunas e M+1 linhas (N é o tamanho da sequência X e M da Y) onde cada célula escolhe a melhor edição (match, mismatch e gap) a partir das adjacentes. Na tabela estas edições são representadas por movimentos: * para baixo (↓) é um gap na sequência X (representa as colunas); * para o lado (→) é um gap na sequência Y (representa as linhas); * e na diagonal (↘) é um match ou mismatch das sequências.
O algoritmo funciona da sequinte maneira:
(1) Inicie tabela com tamanho(X)+1 colunas e tamanho(Y)+1 linhas. (2) Defina a primeira célula como 0 (3) Preencha as células percorrendo a tabela por linha.
x - T C C G A - 0 -1 -2 -3 -4 -5 T -1 C -2 G -3 A -4 A -5
(4) Após preencher a tabela, reconstrua o caminho das melhores edições apartir da última célula.
x - T C C G A - 0 -1 -2 -3 -4 -5 T -1 ↖ 1 ← 0 -1 -2 -3 C -2 0 2 ↖ 1 0 -1 G -3 -2 1 1 ↖ 2 1 A -4 -3 0 0 1 ↖ 3 A -5 -4 -1 -1 0 ↑ 2
Ao final do exemplo, obtemos o seguinte caminho: " ↖ ← ↖ ↖ ↖ ↑" que representa o seguinte alinhamento:
TCCGA. | ||| T-CGAA
Vocês podem brincar um pouco com alinhamento de sequências direto no navegador clicando aqui.
Este algoritmo foi depois adaptado para ignorar gaps no ínicio da sequência por Smith & Waterman. Diferentemente do Needleman-Wunsch que é um alinhador global (busca alinhar as sequências ao máximo de sua extensão), o algoritmo de Smith-Waterman busca alinhar as sequências localmente da melhor forma possível (alinhador local) e e ideal para buscar sequências pequenas em maiores.
Embora muito elegantes e eficientes, estes algoritmos são extremamente exigentes para sequências grandes. Para alinhar duas sequências você precisa calcular a melhor edição para N * M células, além de ter que armazenar o resultado para cada uma destas. Desta forma, para alinhar uma região de 100bp você precisaria de 10.000 células para representar um alinhamento, já para uma região de 1.000bp (relativamente pequena quando comparada ao genoma) você precisaria de 1.000.000 células e assim por diante!
O problema é que os estudos não se limitam a comprar apenas duas sequências. Deseja-se saber quais as espécies mais próximas ou mesmo encontrar sequências similares em bancos de dados extensos como Genebank com centenas de milhares de sequências registradas, o tempo gasto seria intratável. Para solucionar isto algoritmos mais novos usam heurísticas (entenda aqui como chutes instruídos) para acelerar o processo.
O BLAST um dos programas mais utilizados para alinhamento de sequências e busca em bases de dados. Ele quebra a sequência em pequenos pedaços e busca por estes na sua base de dados. Após escolher as sequências o maior número de hits, o programa completa as lácunas utilizando os algoritmos descritos.
Sei que este foi um post mais pesado, mas lembrem-se dúvidas, comentários e sugestões logo abaixo. Não se esqueçam de participar e até a próxima.













