Está en la página 1de 81

Laboratório

Nacional de
Computação
Científica

SIMILARIDADE,
ALINHAMENTOS
E PERFIS

Fernanda M. P. Raupp
fernanda@lncc.br
conteúdo do curso

• problemas algorítmicos da Biologia Molecular

 grande quantidade de dados


 operações repetidas intensamente

• algoritmos

• programas

Fernanda M. P. Raupp/LNCC/2002
seqüências: definições

1) seqüência ou string: sucessão ordenada de caracteres de


um alfabeto
s = ACTGG, p = VALIDEFAC
2) tamanho de uma seqüência: número de caracteres que ela
possui
|s| = 5, |p| = 9
3) seqüência vazia: u = ‘ ‘ ou u = ε , |u| = 0

Fernanda M. P. Raupp/LNCC/2002
seqüências: definições

4) substring de uma seqüência: caracteres consecutivos e na


mesma ordem da seqüência
t = CGC é substring de s = AATCGCA
⇒ s é uma superstring de t
⇒ a string vazia é substring de toda seqüência

5) subseqüência de uma seqüência: caracteres na mesma


ordem da seqüência
t = TA é subseqüência de s = AATCGCA,
⇒ s é uma superseqüência de t

Fernanda M. P. Raupp/LNCC/2002
seqüências: definições

6) intervalo de uma substring: índices [ i..j ] indicam a posição


na string

7) concatenação de duas strings:


s = AATTC e t = CGA,
st = AATTCCGA, ts = CGAAATTC e
|st| = |ts|=|s| + |t|

8) prefixo de seqüência: substring s[1..j ], 0 ≤ j ≤ |s|


⇒ s[1..0] denota substring vazia

9) sufixo de seqüência: substring s[ i.. |s| ], 1 ≤ i ≤ |s| + 1


⇒ s[ |s| +1 .. |s| ] denota substring vazia

Fernanda M. P. Raupp/LNCC/2002
comparação de seqüências

• problema mais elementar da biologia molecular


computacional

• motivação: seqüências similares de DNA, de RNA


e de proteínas implicam em estruturas similares e
consequentemente em funções similares

 encontrar a similaridade entre duas seqüências

 encontrar o alinhamento de duas ou mais


seqüências ou substrings

Fernanda M. P. Raupp/LNCC/2002
comparação e alinhamento

comparação

global local semi-global

seqüências inteiras substrings prefixos e/ou sufixos

alinhamento

Fernanda M. P. Raupp/LNCC/2002
comparação global

• problema: dadas duas seqüências inteiras quero encontrar o


melhor alinhamento entre elas
s = GATTCCG t = GAATTCAG

G A − T T C C G
G A A − T C A G

• alinhamento: inserção de espaços tal que as seqüências


possuam o mesmo tamanho e que haja correspondência
entre seus caracteres ou espaços. Espaço não pode ser
alinhado com outro espaço.

• pontuação de um alinhamento: soma das pontuações de


suas colunas
Fernanda M. P. Raupp/LNCC/2002
comparação global

• sistema de pontuação:
 fornece a pontuação de cada coluna
 é baseado em um modelo estatístico

• exemplo de um sistema de pontuação:


 dois caracteres idênticos receba o valor +1 ⇒ p( i, i ) = +1
 caracteres diferentes receba valor –1 ⇒ p( i, j ) = -1
 um espaço na coluna receba valor –2
⇒ g = p( i, − ) = p(−, i ) = -2

• o melhor alinhamento ou alinhamento ótimo é o


alinhamento de maior pontuação

• similaridade é a maior pontuação entre duas seqüências


⇒ sim(s,t)
Fernanda M. P. Raupp/LNCC/2002
comparação global

• interpretação para o alinhamento global entre duas seq


 par de caracteres distintos: mutação
 par de um caracter com espaço: inserção ou remoção

• projeto para um algoritmo:


 encontrar o melhor alinhamento entre duas seq. s e t
 encontrar sim( s, t )

• o algoritmo básico utiliza como técnica a programação


dinâmica, que tem como fundamento a indução matemática

Fernanda M. P. Raupp/LNCC/2002
princípio da indução matemática

• usado para demonstrar resultados matemáticos

• princípio matemático: P(x) é verdadeira para todo número


natural se: (i) P(1) é verdadeira; (ii) se P(k) é verdadeira,
então P(k+1) é verdadeira

• exemplo: quero provar que 1 + 2 + 3 + ... + n = n (n+1)/2


(i) n = 1 ⇒ 1= 1(1+1)/2, P(1) é verdadeira!
(ii) hipótese indutiva: 1 + 2 + ... + k = k ( k+1)/2
1 + 2 + ... + k + (k+1) = k ( k+1)/2 + (k+1)
= (k+1) ( k/2 + 1)
= (k+1) ( k + 2)/2
⇒ temos a fórmula para k+1, P(k+1) é verdadeira!
Logo, a fórmula vale para todo número natural.
Fernanda M. P. Raupp/LNCC/2002
algoritmo de programação dinâmica

• problema: encontrar a similaridade entre duas seqüências


s e t dadas

• idéia central: resolver uma instância do problema tendo


como vantagem o conhecimento das soluções em instância
menores

• programação dinâmica no problema: a sim( s, t ) é


construída determinando as similaridades entre prefixos
arbitrários de s e t. As similaridades de prefixos menores
são usadas para encontrar as soluções dos prefixos
maiores.

Fernanda M. P. Raupp/LNCC/2002
sim(s,t)

• dadas s e t, com |s| = m e | t| = n, o algoritmo encontra


sim(s,t) resolvendo os subproblemas imediatamente menores:
encontrando a similaridade dos prefixos

 sim (s[1 .. m], t[1.. n-1])


s1 s2 s3 … sm −
t1 t2 t3 … tn-1 tn

 sim (s[1 .. m-1], t[1.. n-1])


s1 s2 s3 … sm-1 sm
t1 t2 t3 … tn-1 tn

 sim (s[1 .. m-1], t[1 .. n])


s1 s2 s3 … sm-1 sm
t1 t2 t3 … tn −
Fernanda M. P. Raupp/LNCC/2002
sim(s,t)

sim( s[1 .. m], t[1.. n-1] ) + g


sim( s,t ) = max sim( s[1 .. m-1], t[1.. n-1] ) + p( sm, tn)
sim( s[1 .. m-1], t[1.. n] ) + g

• para as seqüências s e t dadas


 existem m+1 prefixos de s
 existem n+1 prefixos de t

• matriz (m+1) X (n+1): cada elemento ( i, j ) contém a


similaridade entre s[1 .. i ] e t[1.. j ]
 seqüência s é posta na vertical e t na horizontal
 inicialização
 preenchimento

Fernanda M. P. Raupp/LNCC/2002
matriz de similaridades

• inicialização da matriz:
 cada elemento da primeira linha é igual a j g, 0 ≤ j ≤ n
 cada elemento da primeira coluna é igual a i g , 0 ≤ i ≤ m

• exemplo: |s|=|t|=2
t

t[1..0] t[1..1] t[1..2]


s[1..0] 0 -2 -4
s s[1..1] -2
s[1..2] -4

Fernanda M. P. Raupp/LNCC/2002
matriz de similaridades

• preenchimento da matriz: o elemento ( i, j ) é definido pelas


três entradas anteriores ( i, j-1), ( i-1, j-1) e ( i-1, j )

( i-1, j-1) ( i-1, j )

( i, j-1) ( i, j )

• sim( s, t ) corresponde ao valor do elemento (m,n) da matriz

• complexidade de tempo e espaço do algoritmo é O(nm)

Fernanda M. P. Raupp/LNCC/2002
matriz de similaridades
• exemplo: encontrar a similaridade entre s = ACTC e
t = AGGTC, sabendo que o sistema de pontuação é:
p( i, i ) = 1; p( i, j ) = -1 e g = -2

 inicializar A
 preencher A a partir do elemento a(1,1) com a fórmula:
a( i, j -1 ) + g
a( i, j ) = max a( i -1, j -1) + p( i, j )
a( i -1, j ) + g

ε A G G T C

ε 0 -2 -4 -6 -8 -10
A -2 1 -1 -3 -5 -7
C -4 -1 0 -2 -4 -4
T -6 -3 -2 -1 -1 -3
C -8 -5 -4 -3 -2 0 ⇒ sim(s,t) = 0
alinhamento global ótimo

• a partir de (m,n) percorremos dos elementos da matriz que


contribuíram para a solução ótima de um subproblema até
chegarmos em (0,0)

• verificamos no máximo 3 possibilidades segundo uma ordem


preferencial
maior

menor

• cada seta indica um par de alinhamento

• se houver mais de uma possibilidade, então existe mais de um


alinhamento ótimo

Fernanda M. P. Raupp/LNCC/2002
alinhamento global ótimo

ε A G G T C

ε 0 -2 -4 -6 -8 -10
A -2 1 -1 -3 -5 -7
C -4 -1 0 -2 -4 -4
T -6 -3 -2 -1 -1 -3
C -8 -5 -4 -3 -2 0

A - C T C A C - T C
A G G T C A G G T C

• complexidade para recuperar o alinhamento é O(n+m)

Fernanda M. P. Raupp/LNCC/2002
algoritmo de programação dinâmica

• é capaz de encontrar todas as soluções ótimas

• usa sistema de pontuação diferente para comparar


seqüências de proteínas, refletindo o processo evolutivo

• a similaridade não se altera se trocamos s por t na matriz

• o alinhamento ótimo pode ser diferente quando trocamos


s por t na matriz, pois depende da ordem preferencial

• observação: similaridade ≠ identidade

Fernanda M. P. Raupp/LNCC/2002
comparação local

• um alinhamento local de s e t é um alinhamento entre uma


substring de s e uma substring de t

• problema: identificar os alinhamentos locais entre s e t


• interpretação:
 identificar motivos: por exemplo, domínio de ligação
ATP, domínio de reconhecimento molecular fora da
célula, etc.
 estudar regiões conservadas, pois a similaridade
nessas regiões é maior do que as menos conservadas
• adaptação do algoritmo anterior: cada elemento (i, j) da
matriz (m+1)X(n+1) tem o valor da maior pontuação de um
alinhamento entre o sufixo de s[1..i ] e o sufixo de t[1..j ]

Fernanda M. P. Raupp/LNCC/2002
alinhamento local
• a similaridade é nula, caso o alinhamento local não seja
possível
• não podemos ter elementos negativos na matriz A
 inicialização da matriz: todos os elementos da primeira
linha e da primeira coluna são nulos
 fórmula de preenchimento do elemento ( i, j ) da matriz

a( i, j -1 ) + g
a( i, j ) = max a( i -1, j -1) + p( i, j )
a( i -1, j ) + g
0

• similaridade do maior alinhamento local é o valor do maior


elemento de A
• recuperação do maior alinhamento local é feito a partir do
maior elemento de A até encontrar um elemento nulo
Fernanda M. P. Raupp/LNCC/2002
alinhamento local
• exemplo: queremos encontrar o alinhamento local de
maior pontuação entre s = ACTCG e t = AGGTCA
 inicializar a matriz
 preencher os elementos utilizando a função max
ε A G G T C A
ε 0 0 0 0 0 0 0
A 0 1 0 0 0 0 0
C 0 0 0 0 0 1 0
T 0 0 0 0 1 0 0
C 0 0 0 0 0 2 0
G 0 0 0 0 0 0 1

• alinhamentos locais entre s e t: A, TC e TCA


• alinhamento local ótimo: TC
• em geral, desejam-se alinhamentos locais acima de um
limite inferior pré-fixado
comparação semi-global

• motivação: não se quer cobrar os pontos dos espaços no


início e/ou no final de alinhamentos entre seqüências
• exemplo:
(1) A A T C A A C G _ T A T T A T A T C C
A A C G A T A
(2) A A T C A A C G T A T T A T A T C C
A A C G A T A

• problema: encontrar a similaridade entre duas seqüências


sem penalizar espaços no início e/ou no final do alinhamento

• aplicação: montagem de fragmentos de DNA e busca de


uma seqüência pequena dentro de uma maior
T C C G G A A C _ _ _
_ _ _ _ _ A A C G T G
Fernanda M. P. Raupp/LNCC/2002
comparação semi-global
• vamos adaptar o algoritmo básico de programação dinâmica
prevendo diferentes casos

caso 1: alinhamento entre s e um prefixo de t


s1 s2 s3 … sm − − − −
t1 t2 t3 … tj … tn-1 tn

⇒ sim( s, t ) = max a(m, j ),


1≤j≤n
⇒ recupera-se o alinhamento ótimo começando pelo
elemento a(m,k) = sim(s,t) até o elemento (0,0), 1≤ k ≤ n
t[1..0] t[1..1]  t[1..n]
s[1..0] 0 -2  -2n
s[1..1] -2
 
s[1..m] -2m (m,1)  (m,n)
comparação semi-global

caso 2: alinhamento entre um prefixo de s e t


s1 s2 s3 … si … sm-1 sm
t1 t2 t3 … tn − − − −

⇒ sim( s, t ) = max a(i, n )


1≤ i ≤ m
⇒ recupera-se o alinhamento ótimo começando pelo
elemento a(k, n) = sim(s,t) até o elemento (0,0), 1≤ k ≤ m

t[1..0] t[1..1] … t[1..n]


s[1..0] 0 -2 … -2m
s[1..1] -2 (1,n)
  
s[1..m] -2m (m,n)

Fernanda M. P. Raupp/LNCC/2002
comparação semi-global
caso 3: ambas seqüências terminam com espaços
s1 s2 s3 … sm − − − −
t1 t2 t3 … tj … tn − −
ou
s1 s2 s3 … si … sm − −
t1 t2 t3 … tn − − − −

⇒ sim( s, t ) = max { max a(m, j ), max a( i, n) }


1≤ j ≤m 1≤ i ≤m
⇒ alinhamento ótimo: a partir do maior elemento até (0,0)
t[1..0] t[1..1]  t[1..n]
s[1..0] 0 -2  -2n
s[1..1] -2 (1,n)
  
s[1..m] -2m (m,1)  (m,n)
comparação semi-global
caso 4: alinhamento entre s e um sufixo de t
− − − − s1 s2 … sm
t1 t2 … tj tj+1 … tn
⇒ mudança na matriz:
 (i,j) é a similaridade entre s[1.. i ] e um sufixo de t[1.. j ]
 inicialização: zeros na primeira linha
 fórmula de preenchimento é igual
⇒ sim(s,t) = (m,n)
⇒ recupera-se o alinhamento ótimo de (m,n) até atingir a
primeira linha e depois segue-se até (0,0)
suf t[1..0] suf t[1..1]  suf t[1..n]
s[1..0] 0 0  0
s[1..1] -2
 
s[1..m] -2m (m,n)
comparação semi-global
caso 5: alinhamento entre um sufixo de s e t
s1 s2 … si si+1 … sm
− − − t1 t2 … tn
⇒ mudança na matriz:
 (i,j) é a similaridade entre um sufixo de s[1.. i ] e t[1.. j ]
 inicialização: zeros na primeira coluna
 fórmula de preenchimento é igual

⇒ sim(s,t) = (m,n)
⇒ recupera-se o alinhamento de (m,n) até atingir a primeira
coluna e depois segue-se até (0,0)
t[1..0] t[1..1]  t[1..n]
suf s[1..0] 0 -2  -2n
suf s[1..1] 0
 
suf s[1..m] 0 (m,n)
comparação semi-global

caso 6: alinhamento entre sufixos de s e de t


− − s1 s2 … si … sm t[n+1..n] t[n..n]  t[1..n]
− − − − t1 t2 … tn s[m+1..m] 0 0  0
ou
s[m..m] 0
− − − − s1 s2 … sm
 
− − t1 t2 … tj … tn
s[1..m] 0 (m,n)
⇒ mudança na matriz:
 (i,j) é a similaridade entre um sufixo de s e um sufixo de t
 inicialização: zeros na primeira e na primeira coluna
 fórmula de preenchimento é igual
⇒ sim(s,t) = (m,n)
⇒ recupera-se o alinhamento ótimo de (m,n) até atingir a
primeira linha ou a primeira coluna e depois segue-se até
(0,0)
Fernanda M. P. Raupp/LNCC/2002
espaço linear

• variante do algoritmo básico de programação dinâmica para


encontrar a similaridade entre duas seqüências
• objetivo: reduzir a complexidade de espaço do algoritmo
para atender as aplicações que envolvem uma grande
quantidade de dados

• motivação: quando comparamos genomas de duas bactérias


podemos ter uma matriz com 1012 elementos

• idéia: substituir a matriz por um vetor de tamanho igual a


min {m,n}
temp
(i-1, j-1) (i, j-1)

(i-1, j) ? n<m

Fernanda M. P. Raupp/LNCC/2002
divisão e conquista

• técnica a ser inserida em um algoritmo de programação


dinâmica com espaço linear para recuperar o alinhamento
global ótimo entre s e t

• idéia central: dividir recursivamente o problema em dois


outros menores

• divisão: dado um caracter si num alinhamento ótimo, dois


casos de alinhamentos são possíveis:
1) prefixos de s e t alinhados + si alinhado com tj + sufixos
de s e t alinhados
2) prefixos de s e t alinhados + si alinhado com espaço +
sufixos de s e t alinhados

• dificuldade: definir j para recursivamente encontrar o melhor


alinhamento entre s e t

Fernanda M. P. Raupp/LNCC/2002
divisão e conquista

• dado i, j está associado ao maior valor entre as similaridades


entre s[1 .. i-1] e um prefixo arbitrário de t e as similaridades
entre s[ i+1..m ] e um sufixo arbitrário de t.

• similaridades dos prefixos: aplica-se o algoritmo de espaço


linear definindo o vetor r

• similaridades entre os sufixos: preencher em ordem reversa a


matriz de similaridades e depois aplicar o algoritmo de busca
linear definindo o vetor u

• índice j maximiza { r [ j ] + u[ j ] + p( i, j ), r [ j ] + u[ j ] + g }

• definido j, saberemos se si alinha com tj ou com um espaço

Fernanda M. P. Raupp/LNCC/2002
divisão e conquista

• conquista: eliminar regiões no nosso espaço de busca após


a definição de j
tj

si

• escolha inicial para i: posição próxima ao meio da seqüência

• procedimento é repetido escolhendo um novo i próximo da


metade de uma substring reduzida

Fernanda M. P. Raupp/LNCC/2002
restrição à diagonal

• variante do algoritmo de programação dinâmica para


encontrar alinhamento global entre duas seqüências s e t

• objetivo: melhorar a complexidade de tempo e espaço

• motivação: para duas seqüências idênticas o alinhamento


percorre exatamente a diagonal da matriz

• idéia: limitar o preenchimento dos elementos da matriz em


uma faixa em torno da diagonal principal da matriz. Caso o
alinhamento ótimo não seja encontrado, então a faixa é
alargada.

Fernanda M. P. Raupp/LNCC/2002
restrição à diagonal

• s e t são idênticas, com |s|=| t|=n:


 sim(s,t) =n
 alinhamento segue pela diagonal de (n,n) a (0,0) sem
espaços
t t

s s

• s e t não são idênticas:


inserimos espaços, sempre em pares
no alinhamento ótimo as seqüências tem o mesmo
tamanho
Fernanda M. P. Raupp/LNCC/2002
restrição à diagonal

• faixa de tamanho k: elementos ( i, j ) da matriz de estrutura


de dados satisfazendo: -k ≤ i – j ≤ k
• se ( i, j ) na fronteira da faixa, então devemos testar se os
elementos ( i-1, j) e ( i, j-1 ) estão dentro dela. Somente
elementos dentro da faixa contribuem no preenchimento de
um próximo elemento.
( i-1, j-1) ( i-1, j )
elemento
fora da ( i, j-1) ( i, j )
faixa k

• existem no máximo 2k+1 elementos da matriz dispostos na


horizontal dentro da faixa a serem preenchidos pelo
algoritmo: ( i, j-k ),...,( i, j-1),( i, j ),( i, j+1),...,( i, j+k )
• o mesmo acontece na vertical

2k+1

Fernanda M. P. Raupp/LNCC/2002
restrição à diagonal

• defina α = a (n,n), o valor da maior pontuação de um


alinhamento entre s e t dentro da faixa

• se o alinhamento ótimo está fora da faixa k, então precisamos


inserir pelo menos k+1 pares de espaços

• similaridade do alinhamento ótimo fora da faixa k tem como


limite superior β = n-(k+1)+(k+1)g, onde g < 0 é a pontuação
do espaço e supondo p(i,i)=1

• teste: se α ≥ β então sim(s,t) = α;


senão
aumenta-se k
calcula-se um novo α.
• complexidade de O(kn) para k < n e quando aplicado para
seqüências parecidas
Fernanda M. P. Raupp/LNCC/2002
função de penalização de espaços

• gap: k espaços consecutivos, k > 1

• motivação: durante a evolução, é mais provável que um gap


seja introduzido por um evento do que considerar que vários
eventos tenham ocorrido para justificar espaços isolados
numa seqüência

• proposta: não penalizar um gap do mesmo modo que


penalizamos espaços

• função linear: w(k) = k g, para k ≥ 1

• função afim: w(k) = h + g k, k ≥ 1, onde w(0) = 0, h, g > 0


 penaliza o primeiro espaço de um gap de h+g, e cada espaço
consecutivo acrescido penaliza de g
 complexidade de tempo no algoritmo não se altera
Fernanda M. P. Raupp/LNCC/2002
funções de penalização de espaços

função linear: w(k) = k g, para k ≥ 1

k
1

função afim:
w(k) = h + g k, k ≥ 1, h+g
onde w(0) = 0, h, g > 0 h

0 1 k
função afim de penalização

• algoritmo de programação dinâmica com função afim de


penalização para encontrar alinhamento global:

 primeiro espaço no gap é diferente dos outros espaços


 3 matrizes A, B, e C são necessárias:
a( i, j ) = maior pontuação de um alinhamento entre
s[1..i ] e t[1.. j], que termina com si alinhado com tj

b( i, j ) = maior pontuação de um alinhamento entre


s[1..i] e t[1..j], que termina com espaço alinhado com tj

c( i, j ) = maior pontuação de um alinhamento entre


s[1..i] e t[1..j], que termina com si alinhado com espaço

 preencher os elementos (i,j) das matrizes para 0≤ i ≤ m,


0 ≤ j ≤ n com novas fórmulas

Fernanda M. P. Raupp/LNCC/2002
matrizes A, B, e C a( i-1, j-1)
... si-1 si
... tj-1 tj

... − si
a( i, j ) = p( i, j ) + max b( i-1, j-1) … tj-1 tj

… si-1 si
c( i-1, j-1) … − tj

... si −
a( i, j-1) - (h+g) ... tj-1 tj

... − −
b( i, j ) = max b( i, j-1) - g ... tj-1 tj

... si −
c( i, j-1) - (h+g) ... − tj

... si si
a( i-1, j ) - (h+g) ... tj −

... − si
c( i, j ) = max b( i-1, j ) - (h+g) … tj −

… si-1 si
c( i-1, j ) - g ... − −

Fernanda M. P. Raupp/LNCC/2002
inicialização de A, B, C

• matriz A: os alinhamentos não terminam em espaços


a(0,0) = 0
a( i, 0) = - ∞ para 1 ≤ i ≤ m
a(0, j ) = - ∞ para 1 ≤ j ≤ n

ε t[1..1] ... t[1..n]

ε 0 -∞ ... -∞
s[1..1] -∞
 
s[1..m] -∞ (m,n)

Fernanda M. P. Raupp/LNCC/2002
inicialização de A, B, C

• matriz B: os alinhamentos entre prefixos de s com espaços


não pode existir (define a primeira coluna). Espaços são
alinhados com t (define a primeira linha)
b( i, 0 ) = - ∞ para 0 ≤ i ≤ m
b( 0, j ) = -( h + g j ) para 1 ≤ j ≤ n
ε t[1..1]  t[1..n]
-∞ - (h+g)  - (h+ng)
ε
s[1..1] -∞
 
s[1..m] -∞ (m,n)

• matriz C:
c( i, 0 ) = -( h + g j ) para 1 ≤ i ≤ m
c( 0, j ) = - ∞ para 0 ≤ j ≤ n

• sim(s,t) = max { a(m,n), b(m,n), c(m,n) }


Fernanda M. P. Raupp/LNCC/2002
função afim de penalização

• recupera-se o alinhamento ótimo a partir do elemento (m,n)


máximo até (0,0), percorrendo as 3 matrizes
• complexidade do algoritmo é de O(mn)
• variante do algoritmo: espaço linear e/ou alinhamento local
• algoritmo de Smith-Waterman: algoritmo de programação
dinâmica com função afim de penalização para resolver
alinhamento local

• função geral de penalização de gap: algoritmo passa a ter


complexidade de tempo de O(n3 )

• algoritmo de Needleman-Wunsh: usado para alinhamento


de proteínas por dar mais liberdade na definição da função de
penalização

Fernanda M. P. Raupp/LNCC/2002
considerações gerais

• comparação de seqüências tem origem no problema da


distância de edição
• problema da distância de edição:
 dadas s e t, e as operações de substituição, inserção e remoção
de caracteres
 sabe-se que cada operação está associada a um custo
 determinar as operações necessárias para transformar s em t

• distância entre duas seqüências: é o menor custo


resultante de um conjunto de operações possíveis para
transformar s em t
• prog. dinâmica resolve o problema de distância de edição

• distância é uma medida de comparação global, que avalia o


quanto duas seqüências são diferentes em sua edição
• similaridade e distância não são iguais, embora em muitos
casos exista uma fórmula que as relacionam
considerações gerais

• falso positivo: resultado de um alinhamento dado pelo


algoritmo, porém não é biologicamente verdadeiro
• falso negativo é biologicamente verdadeiro, porém não é
resultado do algoritmo
• seletividade: capacidade de um algoritmo em descartar
pares de seqüências que não se relacionam (falsos positivos)
• sensitividade: habilidade de um algoritmo reconhecer
seqüências que se relacionam
• em geral, seletividade e sensitividade são objetivos opostos
de um algoritmo:
 menor é a razão de falsos positivos, maior é a seletividade
 menor a razão de falsos negativos, maior é a sua sensitividade

• programação dinâmica garante sensitividade mas não


seletividade
Fernanda M. P. Raupp/LNCC/2002
sistema de pontuação para proteínas

• baseado na evolução

• mutações podem ocorrer devido às propriedades físico-


químicas dos amino ácidos

• fundamentado estatístico e biologicamente

• define matrizes de pontuação que dispõem a relação entre


os amino ácidos

• família PAM (percent of accepted mutations) desenvolvida


na década de 60 e a família BLOSUM (blocks substitution
matrix) desenvolvida na década de 80 são as mais usadas

Fernanda M. P. Raupp/LNCC/2002
família PAM

• as matrizes estão associadas a um número chamado de


distância de evolução; exemplo: 250 PAM
• 1 unidade de distância de evolução significa a quantidade de
evolução necessária para mudar, em média, 1% dos amino
ácidos na seqüência de uma proteína

• existe uma matriz de pontuação e uma matriz de probabilidade


de transição para cada unidade de distância de evolução

• 1 PAM: matriz básica


 requer as probabilidades de ocorrência de cada amino ácido
 requer uma lista de mutações aceitáveis entre os amino ácidos
 a partir dela construímos todas as outras matrizes da família
 a pontuação de um par de amino ácidos reflete a freqüência de
substituições em blocos de alinhamentos globais

Fernanda M. P. Raupp/LNCC/2002
sistema de pontuação para proteína

• cada entrada numa matriz de pontuação PAM e BLOSUM


está associada a uma razão entre a probabilidade de o par
resíduos ser resultado de uma mutação e a probabilidade de
o par ser um simples acaso

• maior o valor de um elemento na matriz, mais confiantes


estamos em relação ao alinhamento do par de amino ácidos
• matriz de pontuação de proteínas tem tamanho 20X20
• exemplo de uma A C D E F ...
parte da matriz 4 1 -2 0 -2
A
C 1 9 -3 -1 -5
D -2 -3 7 2 -3
E 0 -1 2 4 -3
F -2 -5 -3 -3 4
...

Fernanda M. P. Raupp/LNCC/2002
sistema de pontuação para proteínas

• família BLOSUM:
 notação: BLOSUM62 indica que as seqüências usadas
para gerar as pontuações têm no máximo 62% de
identidade
 as pontuações dos pares de amino ácidos estão
relacionadas com as freqüências de substituições em
blocos de alinhamentos locais

• na prática adota-se uma família de matrizes de acordo com a


aplicação:
 procura por alta similaridade ou não
 seqüências muito distantes ou não
 BLOSUM62 é a mais usada para todas as comparações
em anotação de genomas

Fernanda M. P. Raupp/LNCC/2002
comparação múltipla de seqüências

• problema: comparar simultaneamente k >1 seqüências

• motivação: seqüências relacionadas por função ou evolução


podem ser diferentes, porém possuem a mesma estrutura
tridimensional ou o mesmo sítio ativo

• aplicação: encontrar trechos conservados (substrings


comuns) no alinhamento múltiplo de k seqüências
relacionadas biologicamente

• exemplo: estudo de uma família de proteínas

• programação dinâmica resolve o problema de alinhamento


múltiplo, porém a sua complexidade de tempo é de ordem
exponencial

Fernanda M. P. Raupp/LNCC/2002
comparação múltipla de seqüências

• problema difícil:
 necessidade de um conhecimento filogenético
 programação dinâmica não é eficiente

• muitos métodos que resolvem o problema de alinhamento


múltiplo foram desenvolvidos

• alinhamento múltiplo: alinhamento de k seqüências de


caracteres com espaços inseridos tal que todas tenham o
mesmo tamanho quando colocadas verticalmente uma sob
a outra. Não pode existir uma coluna exclusivamente de
espaços.
C A A C T T T
C G A − T T −
C G − C A T T
C T A C T C T
Fernanda M. P. Raupp/LNCC/2002
programação dinâmica

• algoritmo aplicado ao alinhamento múltiplo apresenta


pontuação diferente

• pontuação do alinhamento múltiplo: soma das pontuações


das colunas das k seqüências

• função de soma dos pares (função SP):


 aplicada a cada coluna.
 definição: soma dos pontos de todos os pares na coluna
 cada par é avaliado segundo um sistema de pontuação

Fernanda M. P. Raupp/LNCC/2002
programação dinâmica

• exemplo: para o seguinte alinhamento múltiplo

C A A C T T T
C G A − T T −
C G − C A T T
C T A C T C T

temos que a pontuação da segunda coluna é

pSP(A,G,G,T) = p(A,G)+p(A,G)+p(A,T)+p(G,G)+ p(G,T)+p(G,T)

onde a pontuação do par de bases é definida por uma matriz


de pontuação de DNA, por convenção define-se p( −, − ) = 0

Fernanda M. P. Raupp/LNCC/2002
programação dinâmica

• algoritmo: para k seqüências de tamanho n a serem alinhadas


simultaneamente, usa um vetor de k dimensões, onde cada
elemento é um vetor de tamanho n+1

• um elemento da matriz a( i1, ..., ik ) conterá a pontuação do


alinhamento ótimo envolvendo os prefixos s[1..i1], ..., s[1..ik]

• complexidade do algoritmo de programação dinâmica para


resolver o problema de alinhamento múltiplo é de O( k2knk )

• MSA é uma implementação eficiente do algoritmo para


problemas com k ≤ 20 e n ≤ 500

Fernanda M. P. Raupp/LNCC/2002
representação de famílias

• podemos representar uma família de seqüências a partir de


um alinhamento múltiplo
• existem 3 tipos representação: por perfil, por seqüência
consenso e por assinatura
• representação por seqüência consenso: seqüência
construída colocando-se em cada coluna o caracter que
mais aparece na coluna do alinhamento múltiplo. Em caso
de empate, usa-se um caracter especial.
• exemplo: a seqüência CGACTTT é a representação por
consenso do alinhamento múltiplo
C A A C T T T
C G A − T T −
C G − C A T T
C T A C T C T
Fernanda M. P. Raupp/LNCC/2002
representação por perfil

• representação por perfil: matriz que informa a freqüência


relativa com que cada base aparece na coluna do alinhamento
múltiplo
• matriz de pesos ( weight matrix ): matriz de representação de
uma família por perfil
• exemplo de um alinhamento múltiplo entre seqüências de
DNA e seu perfil de freqüências:

1 2 3 4 5 6 7
A 0. 0.25 0.75 0. 0.25 0. 0.
C A A C T T T
C 1. 0.0 0. 0.75 0. 0.25 0.
C G A − T T −
G 0. 0.50 0. 0. 0. 0. 0.
C G − C A T T
T 0. 0.25 0. 0. 0.75 0.75 0.75
C T A C T C T − 0. 0. 0.25 0.25 0. 0. 0.25

Fernanda M. P. Raupp/LNCC/2002
famílias de proteínas

• representação de família de proteínas por perfil: a matriz de


pesos é montada baseada em uma razão de probabilidades
segundo um modelo teórico estatístico

• aplicação: representação de família de proteínas por perfil é


uma das técnicas utilizadas para encontrar sítios de interesse
em um genoma

• motivação: identificar um novo membro de uma família de


proteínas, conhecida a sua representação

Fernanda M. P. Raupp/LNCC/2002
alinhamento entre seqüência e perfil

• problema: comparar uma seqüência s de uma proteína com


um perfil t de uma família conhecido

• passo 1: escolher uma matriz de pontuação para proteínas

• passo 2: construir a pontuação do alinhamento de uma


seqüência s com um perfil t, somando a pontuação do
alinhamento de cada coluna
 um perfil possui mais de uma linha, que representa um
resíduo
 cada coluna de s tem que alinhar com os vários resíduos
em cada coluna do perfil

Fernanda M. P. Raupp/LNCC/2002
alinhamento entre seqüência e perfil

• cada alinhamento de si com uma coluna j do perfil tem a


seguinte contribuição

π( i, j ) = p( i, 1 )w( 1, j ) + p( i, 2 )w( 2, j ) + … + p( i, k )w( k, j )

onde os valores de p( i, 1), ... , p( i, k) são dados pela matriz


de pontuação de proteínas, e w(1, j ), ..., w(k, j ) são os pesos
dos resíduos na coluna j da matriz do perfil
tj
r1
r2
r3
r4
r5

si
Fernanda M. P. Raupp/LNCC/2002
alinhamento entre seqüência e perfil

• programação dinâmica: pode determinar o alinhamento ótimo


entre s e o perfil t
• matriz das similaridades da programação dinâmica é:
a( i -1, j ) + g
a( i, j ) = max a( i -1, j -1) + π( i, j )
a( i , j -1 ) + π( −, j )

onde g < 0 é a penalidade de inserir um espaço no perfil


• somente espaços introduzidos no perfil são penalizamos

t
j-1 j
i-1
s
i
alinhamento projetado

• alinhamento induzido ou projetado: a partir do alinhamento


múltiplo podemos fazer um alinhamento entre duas
seqüências

• alinhamento múltiplo projetado para duas seqüências nem


sempre é um alinhamento ótimo

• exemplo:
alinhamento múltiplo ótimo projeção não ótima
AC
A− A−
−C −C
AC

Fernanda M. P. Raupp/LNCC/2002
programas

BLAST ( basic local alignment search tool )

• é o mais usado para comparar seqüências depositadas em


bancos de seqüências

• bancos de seqüências não são “bancos de dados”


• seus dois artigos são os mais citados na história da ciência
• conjunto de ferramentas:
 blastN: comparação entre seqüências de DNA
 blastP: comparação entre seqüências de proteínas
 blastX : comparação entre uma seqüência consulta de
DNA e um banco de seqüências de proteínas
 tblastN: comparação entre uma consulta de proteína e um
banco de seqüências de DNA
 blast2seq: compara duas seqüências
Fernanda M. P. Raupp/LNCC/2002
BLAST

• proposta: a partir de uma seqüência consulta ( query )


introduzida pelo usuário, BLAST tenta achar todas as
seqüências em bancos ( subject ) que têm alinhamentos
locais estatisticamente significativos

• par de segmentos: substrings de mesmo tamanho, uma de


cada seqüência comparada

• resultado: uma lista de pares de segmentos (hits) entre a


consulta e o banco com pontuação acima de um limite pré-
fixado S

• passo 1: monta uma lista de substrings exatas da


seqüência consulta e do banco ( list of seeds ou words )
 tamanho mínimo fixo ( w )
 pontuação acima de um certo parâmetro T

Fernanda M. P. Raupp/LNCC/2002
BLAST

• vantagem: as substrings possuem tamanhos bem menores


e não apresentam gaps, daí a busca por elas no banco de
seqüências ser muito mais rápida

• quando a consulta é uma proteína, a lista de sementes


contém sementes exatas e variantes com pontuação acima
do valor T (PAM)

• sementes de baixa complexidade de DNA e de proteínas


podem ser removidas da lista com o uso de um filtro no
sentido de melhorar a sensitividade

• w=11 é tamanho mínimo padrão de uma semente de DNA

• w=4 o tamanho mínimo padrão de uma semente de proteína

Fernanda M. P. Raupp/LNCC/2002
BLAST

• exemplo:
seja q = LKNKLTEEAKNKN a seqüência consulta

 lista de substrings exatas de q e do banco de seqüências


com tamanho mínimo
L = { LKNK, KLTE, LTEE, TEEA, EEAK, EAKN}

 variantes das sementes são geradas e alinhadas com as


sementes exatas: LKKK, KNKT, NKKT, etc

 usando uma matriz PAM, se a pontuação do alinhamento


entre uma semente e uma variante dela ficar acima do valor
T, então a variante é incorporada à lista

Fernanda M. P. Raupp/LNCC/2002
BLAST

• passo 2: faz a busca das sementes no banco de seqüências,


usando as técnicas lista hash e autômato finito, com
estratégias diferentes para DNA e para proteína

• passo 3: encontrada uma semente em uma seqüência do


banco, ela então é estendida pela esquerda e pela direita
próxima da diagonal de seu alinhamento com q
subject

• extensão de sementes: técnica baseada em um modelo


estatístico e em heurísticas
• bit score (S´): pontuação das colunas do alinhamento de uma
semente estendida
Fernanda M. P. Raupp/LNCC/2002
BLAST
• hit:
 resultado de BLAST
 par de segmentos
 seu bit score é maior que um determinado valor S

bit score
S

semente hit fim de q


extensão

• uma das heurísticas é parar com o procedimento de extensão


quando a pontuação cai a uma certa distância abaixo da
maior pontuação já obtida e acima de S.
Fernanda M. P. Raupp/LNCC/2002
BLAST

• bit score e e-value são valores associados a um hit

• bit score é o resultado da pontuação do alinhamento local


 função afim de penalização para gaps
 uma matriz de pontuação
 parâmetros

• bit score é normalizado a fim de permitir a comparação


entre diferentes alinhamentos originados por outras
matrizes e parâmetros

• e-value (expectation value): número de diferentes


alinhamentos devido ao acaso que podem ser obtidos no
banco com pontuação próxima ao do hit

• menor o e-value, maior significância estatística tem o hit

Fernanda M. P. Raupp/LNCC/2002
BLAST

• e-value ≤ 0.00001 (e-05) é significativo:


 seu hit pode ser um falso positivo
 podem existir falsos negativos

• hit com e-value ≥ 0.01 é desconsiderado

• e-value sofre influência:


 e-value é maior quando q é pequena, pois aumenta-se a
chance de ocorrer mais alinhamentos ao acaso

• BLAST não dá garantia de encontrar um alinhamento local


ótimo devido ao uso de sementes para otimizar a busca,
mesmo assim é razoável usá-lo por sua rapidez
• parâmetro T determina a velocidade e a sensitividade da busca

Fernanda M. P. Raupp/LNCC/2002
BLAST

• complexidade do pior caso é de O(mn)

• pode ser executado por uma consulta a um banco que


apresenta apenas uma seqüência

• pode ser executado em máquina com processadores


paralelos:
 o banco é divido em p partes
 cada parte é distribuída para um dos p processadores
 é necessário reavaliar bit score e e-value para refletir o
banco de seqüências com um todo

• comparar genoma humano com o genoma de rato via


programação dinâmica ou BLAST não é possível sem um
hardware especial

Fernanda M. P. Raupp/LNCC/2002
FASTA
• família de programas para fazer busca em bancos de
seqüência de DNA e de proteínas:
 FASTP ( primeiro programa disponível )
 FASTN
 TFASTA faz a busca de uma seqüência consulta de proteína
em um banco de seqüências de DNA
 LFASTA é o programa para encontrar alinhamentos locais entre
duas seqüências

• busca seqüências de DNA e de proteínas em bancos de


seqüências por similaridades. É capaz de identificar regiões
de mais alta a mais baixa similaridade.

• usa a técnica de busca por sementes

• utiliza a família de matrizes PAM para avaliar substrings


similares e programação dinâmica para selecioná-las

• algoritmos fundamentados na estatística e em heurísticas


Fernanda M. P. Raupp/LNCC/2002
cross_match

• programa usado para comparação de duas seqüências de


DNA

• seu algoritmo baseia-se na técnica de programação


dinâmica mais a técnica da faixa k

• ele usa a função afim de penalização de gaps e também a


técnica de busca por sementes

• resultado: uma lista com a localização e pontuação do


alinhamentos locais

• conhecido por algoritmo de Smith-Waterman-Gotoh

Fernanda M. P. Raupp/LNCC/2002
patternHunter

• programa para comparar seqüências

• utiliza sementes não exatas para fazer a busca de uma


seqüência consulta num banco de seqüências

• semente não exata: descrita em termos de um vetor binário

• exemplo: a semente é 01011. Cada posição em que 1


ocorre indica que o par de caracteres tem que ser exato no
segmento, nas posições em que há 0, qualquer caracter é
aceito. Pode-se ter um segmento formado pela substring
GTACG e a outra sendo CTCCG

• os autores de pH definiram empiricamente uma semente


para um modelo ótimo de 11 pares de caracteres como
111010010100110111

Fernanda M. P. Raupp/LNCC/2002
Clustal W

• um dos pacotes de programas mais conhecido para


alinhamento múltiplo de seqüências de DNA ou de proteínas

• produz um alinhamento múltiplo biologicamente significativo.


Identidades, similaridades e diferenças podem ser
visualizadas.

• faz alinhamento progressivo, começando por 2 seqüências


com a menor distância. Depois avalia se uma nova seqüência
é alinhada ao par ou se outras duas são alinhadas
isoladamente.

• árvore-guia: técnica usada para estruturar as distâncias das


seqüências duas a duas

• propagação de espaços: conseqüência deste método

Fernanda M. P. Raupp/LNCC/2002
Clustal W

• usa diversas heurísticas:


 podem resultar em respostas diferentes quando trocamos
a ordem das seqüências

 usa matrizes de pontuação diferentes dependendo da


distância entre as seqüências:
 BLOSUM80, para duas seqüências próximas
 BLOSUM50, caso contrário

 mais de uma função de penalização de gaps:


 propriedades físico-químicas dos resíduos
 novo gap ou extensão de um gap

• tempo total de execução de um alinhamento progressivo é de


O(k2n2+ k2l ), onde l é o tamanho do alinhamento final
Fernanda M. P. Raupp/LNCC/2002
executando os programas

• dowload ou diretamente na www


• formato de seqüências
• banco de seqüências
• cross_match
• blast
• clustalw

Fernanda M. P. Raupp/LNCC/2002
formato Clustal W:
human zeta crystallin e E.coli quinone oxidoreductase
CLUSTAL W (1.7) multiple sequence alignment

Human-Zcr MATGQKLMRAVRVFEFGGPEVLKLRSDIAVPIPKDHQVLIKVHACGVNPVETYIRSGTYS
Ecoli-QOR ------MATRIEFHKHGGPEVLQA-VEFTPADPAENEIQVENKAIGINFIDTYIRSGLYP
: :...:.******: ::: . * :::: :: :* *:* ::****** *.

Human-Zcr RKPLLPYTPGSDVAGVIEAVGDNASAFKKGDRVFTSSTISGGYAEYALAADHTVYKLPEK
Ecoli-QOR -PPSLPSGLGTEAAGIVSKVGSGVKHIKAGDRVVYAQSALGAYSSVHNIIADKAAILPAA
* ** *::.**::. **.... :* ****. :.: *.*:. ... **

Human-Zcr LDFKQGAAIGIPYFTAYRALIHSACVKAGESVLVHGASGGVGLAACQIARAYGLKILGTA
Ecoli-QOR ISFEQAAASFLKGLTVYYLLRKTYEIKPDEQFLFHAAAGGVGLIACQWAKALGAKLIGTV
:.*:*.** : :*.* * :: :*..*..*.*.*:***** *** *:* * *::**.

Human-Zcr GTEEGQKIVLQNGAHEVFNHREVNYIDKIKKYVGEKGIDIIIEMLANVNLSKDLSLLSHG
Ecoli-QOR GTAQKAQSALKAGAWQVINYREEDLVERLKEITGGKKVRVVYDSVGRDTWERSLDCLQRR
** : : .*: ** :*:*:** : ::::*: .* * : :: : :.. . .:.*. *.:

Human-Zcr GRVIVVG-SRGTIEINPRDTMAKES----SIIGVTLFSSTKEEFQQYAAALQAGMEIGWL
Ecoli-QOR GLMVSFGNSSGAVTGVNLGILNQKGSLYVTRPSLQGYITTREELTEASNELFSLIASGVI
* :: .* * *:: . : ::. : .: : :*:**: : : * : : * :

Human-Zcr KPVIGSQ--YPLEKVAEAHENIIHGSGATGKMILLL
Ecoli-QOR KVDVAEQQKYPLKDAQRAHE-ILESRATQGSSLLIP
* :..* ***:.. .*** *:.. .: *. :*:

∗ indica um par de resíduos idênticos


. indica uma substituição conservativa
formato BLAST
Score E
Sequences producing significant alignments: (bits) Value

gi|2507517|sp|P39177|UP12_ECOLI UNKNOWN PROTEIN FROM 2D-PAG... 55 6e-09


gi|2507516|sp|P37903|UP03_ECOLI UNKNOWN PROTEIN 2D_000B3L F... 41 1e-04
gi|7429293|pir||C64888 conserved hypothetical protein b1376... 41 1e-04
gi|2507514|sp|P03807|YDAA_ECOLI 35.6 KDA PROTEIN IN TPX-FNR... 38 0.002

Pairwise Alignments
gi|4062229|dbj|BAA35246.1| (D90702) Unknown protein from 2D-page (spots pr25/lm16/2d_000lr3) .
[Escherichia coli]
Length = 142

Score = 55.4 bits (131), Expect = 6e-09


Identities = 44/157 (28%), Positives = 79/157 (50%), Gaps = 17/157 (10%)

Query: 4 MYKKILYPTDFSETAEIALKHVKAFKTLKAEE V I --LLHVIDEREIKKRDIFSLLLGVAG 61


MYK I+ P D E E++ K V+ + L ++ + LLHV+ S L +
Sbjct: 1 MYKTIIMPVDVFEM-ELSDKAVRHAEFLAQDDGVIHLLHVLPG- - - - -- - - - SASLSLHR 50

Query: 62 LNKSVEEFENELKNKLTEEAKNKMENIKKELEDVGFKVKD I IVVG I PHEEIVK I AEDEGV 121


V FE L++ EA+ +++ + ++K + G +E+ ++AE+ G
Sbjct: 51 FAADVRRFEEHLQH - - - -EAQERLQTMVSHFT I DPS RI KQHVRFGSVRDEVNELAEELGA 106

Query: 122 D IIIMGSHGKTNLKEILLGSVTENVIKKSNKPVLVVK 158


D++++GS ++ LLGS +VI+ +N PVLVV+
Sbjct: 107 DVVVIGSR - NPSISTHLLGSNASSVIRHANLPVLVVR 142
referências bibliográficas

• livro: Introduction to computational molecular biology,


João C. Setubal e João Meidanis, ed. PWS, 1997.

• notas de aula: Biologia Computacional,


João C. Setubal, abril de 2002.

• http://www.ncbi.nlm.nih.gov

• http://www.ebi.ac.uk