alinhamento de cadeias de dna comparaÇÃo de seqÜÊncias katia guimarães
TRANSCRIPT
Alinhamento de Cadeias de DNACOMPARAÇÃO
DE SEQÜÊNCIAS
Katia Guimarães
Montagem de Fragmentos de DNA
Montagem de Fragmentos de DNA
Montagem de Fragmentos de DNA
Programação Dinâmica
Metodologia para resolver problemas que consiste na construção de uma tabela contendo soluções de subproblemas de tamanho crescente.
Exemplo clássico: Fatorial
Fatorial
Abordagem Recursiva
function fatorial (n:integer):integer if n > 1 then fatorial:=n * fatorial(n-1) else fatorial:= 1
Implicações desta abordagem em termos de custo?
Fatorial - Abordagem Recursiva
function fat (n:integer):integer if n > 1 then fat := n * fat (n-1) else fat := 1
Fat(10) Fat(9) Fat(8) Fat(1)...
Muitas chamadas recursivas desnecessárias:
Fatorial - Abordagem Iterativa
function fat (n:integer):integer i := 1; fat := 1; while i < n do { i := i+1; fat := fat * i }
1 2 6 24 120 720 ...
Fibonacci - Abordagem Recursiva
Function fib (integer n): integer if (n ≤ 2) then return (1) else return (fib(n-1) + fib(n-2))
Implicações desta abordagem em termos de custo?
Fibonacci - Abordagem Recursiva
F(5) / \ F(4) F(3) / \ / \ F(3) F(2) F(2) F(1) / \ F(2) F(1)
Fibonacci - Abordagem Iterativa
Function fib (integer n) int a = 1, b = 1, c; for (int i = 3; i ≤ n; i++) { c := a + b; a := b; b := c } return (b);
1 1 2 3 5 8 ...11
Alinhamento de Seqüências
Problema: Dadas duas seqüências sobre o mesmo alfabeto, com aproximadamente o mesmo tamanho, encontrar o melhor alinhamento entre estas duas seqüências.
Alinhamento de Seqüências
O melhor alinhamento entre duas seqüências: G A - C G G A T T A G G A T C G G A AT A G é dado por um score que é a soma dos valores associados a cada posição, de acordo com o critério pré-definido.
Alinhamento de Seqüências
O score que é a soma dos valores associados a cada posição, de acordo com o grau de similaridade entre os elementos correspondentes.
Ex: match +1 mismatch -1 space -2
Score de um Alinhamento
Ex: match +1 (good) mismatch -1 (bad) space -2 (worse)
G A - C G G A T T A G G A T C G G A AT A G
score = 9 ·1+ 1·(-1) + 1·(-2) = 6
Programação Dinâmica
O número de possíveis alinhamentos éexponencial no tamanho das seqüências. (Logo, não podemos experimentar todos.)
Abordagem alternativa: Sejam s e t duas seqüências, com |s|=m e |t|=n, construir uma matriz (m+1) x (n+1), onde M(i, j) contém a similaridade entre s[1..i] e t[1..j].
Programação Dinâmica
Esta é uma abordagem indutiva, onde são definidos os scores para as seqüências menores, e a partir dessas, novos scores são computados os scores de cadeias maiores.Ex: G A - C A T T G G A T C A AT G G custa -2; GA custa -4; G G custa +1; G GA custa -1;
Programação Dinâmica
1a. linha e1a. coluna fáceis de computar: G A C A T T G 0 -2 -4 -6 -8 -10 -12 -14 G -2 A -4 T -6 C -8 A -10 A -12 T -14 G -16
Programação Dinâmica
Dado que eu sei computar os scores dos melhores alinhamentos entre prefixos de s e t com tamanhos menores que i e j, respectivamente, como eu posso calcular omelhor alinhamento de s[1..i] com t[1..j]?
Programação Dinâmica
O score do melhor alinhamento será calculado em função do último passo deuma transformação de s[1..i] em t[1..j].
Um passo pode ser I (inserção), R (remoção), S (substituição) ou M (match)
Programação Dinâmica
1. Se do último passo for I (inserção): Ex: G A G C A T T C G A - C A A T C G Solução: Alinhe s[1..i] com t[1..j-1] e case um espaço com t[j]. 1 .................................. i s: G A G C A T T C t: G A - C A A T C G 1 ................................ j-1 j
Programação Dinâmica 2. Se do último passo for M (match) ou S (substituição):
Solução: Alinhe s[1..i-1] com t[1..j-1] e case s[i] com t[j].
1 ........................... i-1 i s: G A G C A T T C t: G A - C A A T C 1 ........................... j-1 j
Programação Dinâmica 3. Se do último passo for R (remoção):
Solução: Alinhe s[1..i-1] com t[1..j] e case s[i] com um espaço.
1 ................................. i-1 i s: G A G C A T T C G t: G A - C A A T C 1 ........................... j-1 j
Programação Dinâmica
M (i, j) = max M (i, j-1) - 2 (último passo = I) M (i-1, j-1) + p(i,j) (último passo = S/M) M (i-1, j) - 2 (último passo =R)