SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
1
Algoritmo de Smith-Waterman
Alinhamento local
Marcos Castro
2
Introdução
O algoritmo de Smith-Waterman é um algoritmo para a
realização de alinhamento local de sequências.
O algoritmo foi proposto em 1981 por Smith e Waterman e é
uma variação do algoritmo Needleman-Wunsch, portanto,
Smith-Waterman é um algoritmo de programação dinâmica.
O algoritmo garante encontrar o alinhamento local ótimo.
3
Algoritmo de Smith-Waterman
O algoritmo faz uso de uma matriz de pontuação (scores)
para medir a similaridade entre os caracteres.
Temos os parâmetros: match (caracteres iguais), mismatch
(caracteres diferentes) e gap penalty (penalidade por lacuna).
Exemplo: match = 1, mismatch = -1 e gap penalty = -1.
4
Supor uma sequência s1 e outra sequência s2, tam_s1 e
tam_s2 serão os tamanhos dessas sequências.
“M” será o nome da nossa matriz. O primeiro passo é alocar
uma matriz (tam_s2 + 1) linhas por (tam_s1 + 1) colunas.
Iremos indexar a partir do zero. M[0][0] corresponde ao
elemento da primeira linha e primeira coluna, M[0][1]
corresponde ao elemento da primeira linha e segunda coluna
e assim por diante.
Algoritmo de Smith-Waterman
5
Algoritmo de Smith-Waterman
A primeira linha e primeira coluna serão inicializadas com 0.
Iremos alinhar as sequências:
Sequência 1: GGAT
Sequência 2: GAT
- G G A T
- 0 0 0 0 0
G 0
A 0
T 0
6
Para preencher o restante da matriz, precisamos calcular o
valor que vem da diagonal superior esquerda, do topo e da
esquerda de cada célula da matriz. Iremos calcular esses
valores para M[1][1] que está representado pelo ponto de
interrogação.
Algoritmo de Smith-Waterman
- G G A T
- 0 0 0 0 0
G 0 ?
A 0
T 0
7
O valor da diagonal é calculado:
diagonal = M[i - 1][j - 1] + score
“score” será igual a “match” se os caracteres forem iguais,
caso contrário será igual a “mismatch”.
Algoritmo de Smith-Waterman
- G G A T
- 0 0 0 0 0
G 0 ?
A 0
T 0
8
diagonal = M[i - 1][j - 1] + score
Para M[1][1] (i = 1 e j = 1) ficará:
diagonal = M[0][0] + score
diagonal = 0 + (+1) (match) = 1
Algoritmo de Smith-Waterman
- G G A T
- 0 0 0 0 0
G 0 ?
A 0
T 0
9
O topo calcula-se da seguinte forma:
topo = M[i - 1][j] + gap_penalty
Para M[1][1] temos que (gap_penalty = -1):
topo = M[0][1] + (-1) = 0 + (-1) = -1
Algoritmo de Smith-Waterman
- G G A T
- 0 0 0 0 0
G 0 ?
A 0
T 0
10
A esquerda calcula-se da seguinte forma:
esquerda = M[i][j - 1] + gap_penalty
Para M[1][1] temos que (gap_penalty = -1):
esquerda = M[1][0] + (-1) = 0 + (-1) = -1
Algoritmo de Smith-Waterman
- G G A T
- 0 0 0 0 0
G 0 ?
A 0
T 0
11
Temos os valores da diagonal, do topo e da esquerda:
diagonal = 1, topo = -1, esquerda = -1
Para saber o M[1][1] basta calcular o máximo desses valores
incluindo o 0:
M[1][1] = max(0, 1, -1, -1) = 0
Algoritmo de Smith-Waterman
- G G A T
- 0 0 0 0 0
G 0 ?
A 0
T 0
12
Agora iremos calcular o M[1][2]:
diagonal = 0 + (+1) (match) = 1
topo = 0 + (-1) = -1
esquerda = 1 + (-1) = 0
M[1][2] = max(0, 1, -1, 0) = 1
Algoritmo de Smith-Waterman
- G G A T
- 0 0 0 0 0
G 0 1 ?
A 0
T 0
13
Matriz preenchida:
Algoritmo de Smith-Waterman
- G G A T
- 0 0 0 0 0
G 0 1 1 0 0
A 0 0 0 2 1
T 0 0 0 1 3
14
O algoritmo permite reconhecer qual a célula que deu origem
a cada entrada da matriz. Essa precedência é indicada pelas
setas.
Algoritmo de Smith-Waterman
- G G A T
- 0 0 0 0 0
G 0 1 1 0 0
A 0 0 0 2 1
T 0 0 0 1 3
15
O processo de backtracking começa da célula da matriz de
pontuação mais alta (no nosso caso é a M[3][4]) e continua
até que uma célula com pontuação zero seja encontrada.
M[3][4] veio da diagonal, então as duas sequências recebem
caracteres.
Sequência 1: T
Sequência 2: T
Algoritmo de Smith-Waterman
- G G A T
- 0 0 0 0 0
G 0 1 1 0 0
A 0 0 0 2 1
T 0 0 0 1 3
16
M[2][3] veio da diagonal, então as duas sequências recebem
caracteres.
Sequência 1: AT
Sequência 2: AT
Algoritmo de Smith-Waterman
- G G A T
- 0 0 0 0 0
G 0 1 1 0 0
A 0 0 0 2 1
T 0 0 0 1 3
17
M[1][2] veio da diagonal, então as duas sequências recebem
caracteres.
Sequência 1: GAT
Sequência 2: GAT
Algoritmo de Smith-Waterman
- G G A T
- 0 0 0 0 0
G 0 1 1 0 0
A 0 0 0 2 1
T 0 0 0 1 3
18
M[0][1] é 0, então o processo de alinhamento terminou.
Algoritmo de Smith-Waterman
- G G A T
- 0 0 0 0 0
G 0 1 1 0 0
A 0 0 0 2 1
T 0 0 0 1 3
19
Se tivesse uma seta apontando para o topo, colocaríamos
uma lacuna na sequência 1 e o caractere na sequência 2.
Algoritmo de Smith-Waterman
- G G A T
- 0 0 0 0 0
G 0 1 1 0 0
A 0 0 0 2 1
T 0 0 0 1 3
20
Se tivesse uma seta apontando para a esquerda,
colocaríamos o caractere na sequência 1 e a lacuna na
sequência 2.
Algoritmo de Smith-Waterman
- G G A T
- 0 0 0 0 0
G 0 1 1 0 0
A 0 0 0 2 1
T 0 0 0 1 3
21
A implementação foi feita utilizando a linguagem de
programação Python. O código encontra-se no endereço:
https://github.com/marcoscastro/msc_bioinfo/tree/master/sm
ith_waterman
Para executar o nosso exemplo basta fazer:
python smith_waterman.py GGAT GAT 1 -1 -1
GGAT e GAT são as sequências. 1, -1 e -1 são os
parâmetros match, mismatch e gap_penalty respectivamente.
Implementação
22
Dúvidas?
mcastrosouza@live.com
Obrigado!
23
http://pt.slideshare.net/avrilcoghlan/the-smith-waterman-algor
ithm
http://en.wikipedia.org/wiki/Smith-Waterman_algorithm
http://web.ist.utl.pt/ist155746/relatorio_2_bc.pdf
Referências

Mais conteúdo relacionado

Mais procurados

Progressão geométrica
Progressão geométricaProgressão geométrica
Progressão geométrica
leilamaluf
 
Estudando as sequências numéricas com Fibonacci
Estudando as sequências numéricas com FibonacciEstudando as sequências numéricas com Fibonacci
Estudando as sequências numéricas com Fibonacci
LeandroJayme
 
Exercícios resolvidos sobre fatoração de polinômios
Exercícios resolvidos sobre fatoração de polinômiosExercícios resolvidos sobre fatoração de polinômios
Exercícios resolvidos sobre fatoração de polinômios
André Luís Nogueira
 
Progressão aritmética exercícios
Progressão aritmética exercíciosProgressão aritmética exercícios
Progressão aritmética exercícios
lucienejade
 
Função modular
Função modularFunção modular
Função modular
ISJ
 
Segmentos proporcionais 1
Segmentos proporcionais 1Segmentos proporcionais 1
Segmentos proporcionais 1
luciaoliv
 
Educogente 9° ano -aula 1 - equação do 2° grau -
Educogente   9° ano -aula 1 - equação do 2° grau -Educogente   9° ano -aula 1 - equação do 2° grau -
Educogente 9° ano -aula 1 - equação do 2° grau -
Patrícia Costa Grigório
 
Funcao Exponencial 1
Funcao Exponencial 1Funcao Exponencial 1
Funcao Exponencial 1
tioheraclito
 

Mais procurados (20)

21 aula graficos de funcoes reais
21 aula   graficos de funcoes reais21 aula   graficos de funcoes reais
21 aula graficos de funcoes reais
 
Progressão geométrica
Progressão geométricaProgressão geométrica
Progressão geométrica
 
Conjuntos numericos - Caracateristicas e propriedades.
Conjuntos numericos - Caracateristicas e propriedades.Conjuntos numericos - Caracateristicas e propriedades.
Conjuntos numericos - Caracateristicas e propriedades.
 
Matrizes
MatrizesMatrizes
Matrizes
 
Estudando as sequências numéricas com Fibonacci
Estudando as sequências numéricas com FibonacciEstudando as sequências numéricas com Fibonacci
Estudando as sequências numéricas com Fibonacci
 
Exercícios resolvidos sobre fatoração de polinômios
Exercícios resolvidos sobre fatoração de polinômiosExercícios resolvidos sobre fatoração de polinômios
Exercícios resolvidos sobre fatoração de polinômios
 
Progressão aritmética
Progressão aritméticaProgressão aritmética
Progressão aritmética
 
Cesgranrio petrobras final
Cesgranrio   petrobras finalCesgranrio   petrobras final
Cesgranrio petrobras final
 
Progressão aritmética exercícios
Progressão aritmética exercíciosProgressão aritmética exercícios
Progressão aritmética exercícios
 
Progressão aritmética-prof-dalbello
Progressão aritmética-prof-dalbelloProgressão aritmética-prof-dalbello
Progressão aritmética-prof-dalbello
 
Função modular
Função modularFunção modular
Função modular
 
Elementos de Matemática Básica - Funções
Elementos de Matemática Básica - FunçõesElementos de Matemática Básica - Funções
Elementos de Matemática Básica - Funções
 
Segmentos proporcionais 1
Segmentos proporcionais 1Segmentos proporcionais 1
Segmentos proporcionais 1
 
Educogente 9° ano -aula 1 - equação do 2° grau -
Educogente   9° ano -aula 1 - equação do 2° grau -Educogente   9° ano -aula 1 - equação do 2° grau -
Educogente 9° ano -aula 1 - equação do 2° grau -
 
Matemática – radiciação propriedades 01 – 2013
Matemática – radiciação propriedades 01 – 2013Matemática – radiciação propriedades 01 – 2013
Matemática – radiciação propriedades 01 – 2013
 
Aula2 equação 1º_
Aula2 equação 1º_Aula2 equação 1º_
Aula2 equação 1º_
 
Funcao Exponencial 1
Funcao Exponencial 1Funcao Exponencial 1
Funcao Exponencial 1
 
Questões com equação do 2º grau.enem
Questões com equação do 2º grau.enemQuestões com equação do 2º grau.enem
Questões com equação do 2º grau.enem
 
Determinantes - 2º B
Determinantes - 2º BDeterminantes - 2º B
Determinantes - 2º B
 
Ladrilahamento
LadrilahamentoLadrilahamento
Ladrilahamento
 

Destaque

Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks
Desenvolvimento orientado a objetos com C++ e QT4 - Henrique MarksDesenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks
Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks
Tchelinux
 

Destaque (20)

Big data, e eu com isso?
Big data, e eu com isso?Big data, e eu com isso?
Big data, e eu com isso?
 
Qt Techday - João Pessoa
Qt Techday - João PessoaQt Techday - João Pessoa
Qt Techday - João Pessoa
 
Dicas de otimização para aplicações Qt
Dicas de otimização para aplicações QtDicas de otimização para aplicações Qt
Dicas de otimização para aplicações Qt
 
Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks
Desenvolvimento orientado a objetos com C++ e QT4 - Henrique MarksDesenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks
Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks
 
PySide
PySidePySide
PySide
 
Introdução ao Qt
Introdução ao QtIntrodução ao Qt
Introdução ao Qt
 
Arquivos FASTQ
Arquivos FASTQArquivos FASTQ
Arquivos FASTQ
 
Análise Assintótica
Análise AssintóticaAnálise Assintótica
Análise Assintótica
 
Programação dinâmica
Programação dinâmicaProgramação dinâmica
Programação dinâmica
 
Listas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosListas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionários
 
Algoritmos gulosos
Algoritmos gulososAlgoritmos gulosos
Algoritmos gulosos
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFS
 
Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro Viajante
 
Algoritmo de Kosaraju
Algoritmo de KosarajuAlgoritmo de Kosaraju
Algoritmo de Kosaraju
 
Maratona de Programação com STL
Maratona de Programação com STLMaratona de Programação com STL
Maratona de Programação com STL
 
Backtracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntosBacktracking - Gerar todos os subconjuntos
Backtracking - Gerar todos os subconjuntos
 
Mágica com qt’s meta object system
Mágica com qt’s meta object systemMágica com qt’s meta object system
Mágica com qt’s meta object system
 
Construção de interfaces gráficas com Tkinter
Construção de interfaces gráficas com TkinterConstrução de interfaces gráficas com Tkinter
Construção de interfaces gráficas com Tkinter
 
Árvores de Decisão
Árvores de DecisãoÁrvores de Decisão
Árvores de Decisão
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated Annealing
 

Semelhante a Algoritmo de Smith-Waterman

Semelhante a Algoritmo de Smith-Waterman (6)

Determinantes sistemas lineares
Determinantes sistemas linearesDeterminantes sistemas lineares
Determinantes sistemas lineares
 
Determinantes
DeterminantesDeterminantes
Determinantes
 
Determinantes sistemas lineares
Determinantes sistemas linearesDeterminantes sistemas lineares
Determinantes sistemas lineares
 
Determinantes Sistemas Lineares
Determinantes Sistemas LinearesDeterminantes Sistemas Lineares
Determinantes Sistemas Lineares
 
Determinantes sistemas lineares
Determinantes sistemas linearesDeterminantes sistemas lineares
Determinantes sistemas lineares
 
Apostila de matematica para concursos
Apostila de matematica para concursosApostila de matematica para concursos
Apostila de matematica para concursos
 

Mais de Marcos Castro

Mais de Marcos Castro (20)

Colored de Bruijn Graphs
Colored de Bruijn GraphsColored de Bruijn Graphs
Colored de Bruijn Graphs
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de Programação
 
Bioinformática
BioinformáticaBioinformática
Bioinformática
 
Ferramentas para Bioinformática
Ferramentas para BioinformáticaFerramentas para Bioinformática
Ferramentas para Bioinformática
 
A importância da Bioinformática
A importância da BioinformáticaA importância da Bioinformática
A importância da Bioinformática
 
Bioinformática
BioinformáticaBioinformática
Bioinformática
 
Redes Neurais Artificiais
Redes Neurais ArtificiaisRedes Neurais Artificiais
Redes Neurais Artificiais
 
Expressões Regulares com Python 3
Expressões Regulares com Python 3Expressões Regulares com Python 3
Expressões Regulares com Python 3
 
Python - Set
Python - SetPython - Set
Python - Set
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - Dicionários
 
Tabela Hash
Tabela HashTabela Hash
Tabela Hash
 
Binary heap
Binary heapBinary heap
Binary heap
 
Fila de prioridades
Fila de prioridadesFila de prioridades
Fila de prioridades
 
Agrupamento de sequências biológicas
Agrupamento de sequências biológicasAgrupamento de sequências biológicas
Agrupamento de sequências biológicas
 
Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)Longest palindromic subsequence (LPS)
Longest palindromic subsequence (LPS)
 
Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)Problema da Mochila 0-1 (Knapsack problem)
Problema da Mochila 0-1 (Knapsack problem)
 
Algoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPAlgoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMP
 
Bioinformática com Biopython
Bioinformática com BiopythonBioinformática com Biopython
Bioinformática com Biopython
 
Estruturas de dados com C++ e STL
Estruturas de dados com C++ e STLEstruturas de dados com C++ e STL
Estruturas de dados com C++ e STL
 
Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)Problema das N rainhas (Backtracking)
Problema das N rainhas (Backtracking)
 

Último

Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
tatianehilda
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 
Aula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptxAula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptx
andrenespoli3
 

Último (20)

Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUA
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUAO PLANETA TERRA E SEU SATÉLITE NATURAL - LUA
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUA
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Araribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioAraribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medio
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
Aula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptxAula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptx
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
Aula de jornada de trabalho - reforma.ppt
Aula de jornada de trabalho - reforma.pptAula de jornada de trabalho - reforma.ppt
Aula de jornada de trabalho - reforma.ppt
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 

Algoritmo de Smith-Waterman

  • 2. 2 Introdução O algoritmo de Smith-Waterman é um algoritmo para a realização de alinhamento local de sequências. O algoritmo foi proposto em 1981 por Smith e Waterman e é uma variação do algoritmo Needleman-Wunsch, portanto, Smith-Waterman é um algoritmo de programação dinâmica. O algoritmo garante encontrar o alinhamento local ótimo.
  • 3. 3 Algoritmo de Smith-Waterman O algoritmo faz uso de uma matriz de pontuação (scores) para medir a similaridade entre os caracteres. Temos os parâmetros: match (caracteres iguais), mismatch (caracteres diferentes) e gap penalty (penalidade por lacuna). Exemplo: match = 1, mismatch = -1 e gap penalty = -1.
  • 4. 4 Supor uma sequência s1 e outra sequência s2, tam_s1 e tam_s2 serão os tamanhos dessas sequências. “M” será o nome da nossa matriz. O primeiro passo é alocar uma matriz (tam_s2 + 1) linhas por (tam_s1 + 1) colunas. Iremos indexar a partir do zero. M[0][0] corresponde ao elemento da primeira linha e primeira coluna, M[0][1] corresponde ao elemento da primeira linha e segunda coluna e assim por diante. Algoritmo de Smith-Waterman
  • 5. 5 Algoritmo de Smith-Waterman A primeira linha e primeira coluna serão inicializadas com 0. Iremos alinhar as sequências: Sequência 1: GGAT Sequência 2: GAT - G G A T - 0 0 0 0 0 G 0 A 0 T 0
  • 6. 6 Para preencher o restante da matriz, precisamos calcular o valor que vem da diagonal superior esquerda, do topo e da esquerda de cada célula da matriz. Iremos calcular esses valores para M[1][1] que está representado pelo ponto de interrogação. Algoritmo de Smith-Waterman - G G A T - 0 0 0 0 0 G 0 ? A 0 T 0
  • 7. 7 O valor da diagonal é calculado: diagonal = M[i - 1][j - 1] + score “score” será igual a “match” se os caracteres forem iguais, caso contrário será igual a “mismatch”. Algoritmo de Smith-Waterman - G G A T - 0 0 0 0 0 G 0 ? A 0 T 0
  • 8. 8 diagonal = M[i - 1][j - 1] + score Para M[1][1] (i = 1 e j = 1) ficará: diagonal = M[0][0] + score diagonal = 0 + (+1) (match) = 1 Algoritmo de Smith-Waterman - G G A T - 0 0 0 0 0 G 0 ? A 0 T 0
  • 9. 9 O topo calcula-se da seguinte forma: topo = M[i - 1][j] + gap_penalty Para M[1][1] temos que (gap_penalty = -1): topo = M[0][1] + (-1) = 0 + (-1) = -1 Algoritmo de Smith-Waterman - G G A T - 0 0 0 0 0 G 0 ? A 0 T 0
  • 10. 10 A esquerda calcula-se da seguinte forma: esquerda = M[i][j - 1] + gap_penalty Para M[1][1] temos que (gap_penalty = -1): esquerda = M[1][0] + (-1) = 0 + (-1) = -1 Algoritmo de Smith-Waterman - G G A T - 0 0 0 0 0 G 0 ? A 0 T 0
  • 11. 11 Temos os valores da diagonal, do topo e da esquerda: diagonal = 1, topo = -1, esquerda = -1 Para saber o M[1][1] basta calcular o máximo desses valores incluindo o 0: M[1][1] = max(0, 1, -1, -1) = 0 Algoritmo de Smith-Waterman - G G A T - 0 0 0 0 0 G 0 ? A 0 T 0
  • 12. 12 Agora iremos calcular o M[1][2]: diagonal = 0 + (+1) (match) = 1 topo = 0 + (-1) = -1 esquerda = 1 + (-1) = 0 M[1][2] = max(0, 1, -1, 0) = 1 Algoritmo de Smith-Waterman - G G A T - 0 0 0 0 0 G 0 1 ? A 0 T 0
  • 13. 13 Matriz preenchida: Algoritmo de Smith-Waterman - G G A T - 0 0 0 0 0 G 0 1 1 0 0 A 0 0 0 2 1 T 0 0 0 1 3
  • 14. 14 O algoritmo permite reconhecer qual a célula que deu origem a cada entrada da matriz. Essa precedência é indicada pelas setas. Algoritmo de Smith-Waterman - G G A T - 0 0 0 0 0 G 0 1 1 0 0 A 0 0 0 2 1 T 0 0 0 1 3
  • 15. 15 O processo de backtracking começa da célula da matriz de pontuação mais alta (no nosso caso é a M[3][4]) e continua até que uma célula com pontuação zero seja encontrada. M[3][4] veio da diagonal, então as duas sequências recebem caracteres. Sequência 1: T Sequência 2: T Algoritmo de Smith-Waterman - G G A T - 0 0 0 0 0 G 0 1 1 0 0 A 0 0 0 2 1 T 0 0 0 1 3
  • 16. 16 M[2][3] veio da diagonal, então as duas sequências recebem caracteres. Sequência 1: AT Sequência 2: AT Algoritmo de Smith-Waterman - G G A T - 0 0 0 0 0 G 0 1 1 0 0 A 0 0 0 2 1 T 0 0 0 1 3
  • 17. 17 M[1][2] veio da diagonal, então as duas sequências recebem caracteres. Sequência 1: GAT Sequência 2: GAT Algoritmo de Smith-Waterman - G G A T - 0 0 0 0 0 G 0 1 1 0 0 A 0 0 0 2 1 T 0 0 0 1 3
  • 18. 18 M[0][1] é 0, então o processo de alinhamento terminou. Algoritmo de Smith-Waterman - G G A T - 0 0 0 0 0 G 0 1 1 0 0 A 0 0 0 2 1 T 0 0 0 1 3
  • 19. 19 Se tivesse uma seta apontando para o topo, colocaríamos uma lacuna na sequência 1 e o caractere na sequência 2. Algoritmo de Smith-Waterman - G G A T - 0 0 0 0 0 G 0 1 1 0 0 A 0 0 0 2 1 T 0 0 0 1 3
  • 20. 20 Se tivesse uma seta apontando para a esquerda, colocaríamos o caractere na sequência 1 e a lacuna na sequência 2. Algoritmo de Smith-Waterman - G G A T - 0 0 0 0 0 G 0 1 1 0 0 A 0 0 0 2 1 T 0 0 0 1 3
  • 21. 21 A implementação foi feita utilizando a linguagem de programação Python. O código encontra-se no endereço: https://github.com/marcoscastro/msc_bioinfo/tree/master/sm ith_waterman Para executar o nosso exemplo basta fazer: python smith_waterman.py GGAT GAT 1 -1 -1 GGAT e GAT são as sequências. 1, -1 e -1 são os parâmetros match, mismatch e gap_penalty respectivamente. Implementação