A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Intr. à Biologia Computacional

Apresentações semelhantes


Apresentação em tema: "Intr. à Biologia Computacional"— Transcrição da apresentação:

1 Intr. à Biologia Computacional
ALINHAMENTOS ÓTIMOS

2 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) (último passo =R) onde p(i,j) = se s[i] = t[j] (M) se s[i]  t[j] (S) set/00

3 Computando a Matriz M -1 +1 -2 R S M -2 I i-1, j-1 i-1, j i, j-1 i, j
-1 +1 -2 R S M -2 i, j-1 i, j I set/00

4 Computando a Matriz M A G C A A A C -4 -6 -2 -2 1 -1 -3 -4 -1 -2 -6 -3
-4 -6 -2 A -2 1 -1 -3 A -4 -1 -2 A -6 -3 -2 -1 C -8 -4 -1 -5 set/00

5 Algoritmo M m  |s|; n  |t|;
for i  0 to m do M[i, 0]  i · g custo rem. for j  0 to n do M[0, j]  j · g custo ins. for i  1 to m do for j  1 to n do M[i, j]  max  M [i, j-1] + g; M [i-1, j-1] + p(i,j); M [i-1, j] + g  return (M[m, n] ) set/00

6 Construindo Alinhamentos
Vamos começar na entrada [m, n] da matriz M, e seguir as setas até chegar na entrada [0, 0]. 1. Se a seta saindo de [i, j] é horizontal, então teremos uma coluna com um espaço em s casado com t[j]. Ex: M[1, 2]: s: A - t: A G set/00

7 Construindo Alinhamentos
2. Se a seta saindo de [i, j] é vertical, então teremos uma coluna com s[i] casado com um espaço em t. Ex: M[3, 1]: s: A A A t: A set/00

8 Construindo Alinhamentos
3. Se a seta saindo de [i, j] é diagonal, então teremos uma coluna com s[i] alinhado com t[j] (quer sejam idênticos ou não). Ex: M[3, 3]: s: A A A t: A G C set/00

9 Algoritmo Align (m, n, len, M)
Entrada: m = |s|, n = |t|, matriz M Saída: len, o comprimento da seqüência de alinhamento, dada pelos vetores align-s e align-t, que contêm símbolos e espaços. Note que max(|s|, |t|)  len  m + n. set/00

10 Algoritmo Align (m, n, len, M)
if i = 0 and j = 0 then len  0 else if i  0 and M[i, j] = M[i-1, j] + g then /* símbolo de s com ´-` */ Align (i-1, j, len, M); len  len + 1; align-s[len]  s[i] align-t[len]  ´-` else set/00

11 Algoritmo Align (m, n, len, M)
if ( i  0 and j  0 and M[i, j] = M[i-1, j-1] + p(i, j) ) then /* alinha s[i] com t[j] */ Align (i-1, j-1, len, M); len  len + 1; align-s[len]  s[i] align-t[len]  t[j]  else set/00

12 Algoritmo Align (m, n, len, M)
/* caso: j > 0 e M[i, j] = M[i, j-1] + g */ /* alinha t[j] com espaço*/ Align (i, j-1, len, M); len  len + 1; align-s[len]  ´-` align-t[len]  t[j]  set/00

13 Algoritmo Align Observe que há em geral diversas
escolhas para um alinhamento ótimo. O algoritmo dado dá preferência aos passos na ordem: 1. Vertical (R) 2. Diagonal (S/M) 3. Horizontal (I) set/00

14 Algoritmo Align Se s = ATAT e t = TATA, obtemos: Align-s = - A T A T
Align-t = T A T A - Se s = AA e t = AAAA, obtemos: Align-s = A A Align-t = A A A A (Há outros 5 alinhamentos ótimos) set/00

15 Complexidade dos Algoritmos
Algoritmo M: O(m . n ) Algoritmo Align: O(m + n ) set/00


Carregar ppt "Intr. à Biologia Computacional"

Apresentações semelhantes


Anúncios Google