SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
1
Algoritmo de Needleman-Wunsch
Alinhamento global
Marcos Castro
2
Introdução
O Algoritmo de Needleman-Wunsch é utilizado em
Bioinformática para realizar o alinhamento global de
sequências de proteínas ou nucleotídeos.
Essa foi uma das primeiras aplicações que utilizaram
programação dinâmica para comparar sequências biológicas.
O algoritmo leva o nome dos seus autores: Needleman e
Wunsch.
3
Alinhamento global vs local
Alinhamento global é um alinhamento que se faz em toda a
extensão da sequência.
No alinhamento local se procura alinhar fragmentos das
sequências e não toda a extensão das mesmas.
O algoritmo de Needleman-Wunsch realiza o alinhamento
global garantindo solução ótima.
4
Algoritmo de Needleman-Wunsch
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.
5
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 Needleman-Wunsch
6
Algoritmo de Needleman-Wunsch
O M[0][0] será 0. O restante dos elementos da primeira linha
serão preenchidos da seguinte forma:
M[0][i] = M[0][i - 1] + gap_penalty (i > 0)
O restante dos elementos da primeira coluna serão
preenchidos da seguinte forma:
M[j][0] = M[j - 1][0] + gap_penalty (j > 0)
7
Exemplo para inicializar a primeira linha:
gap_penalty = -1
M[0][1] = M[0][0] + gap_penalty = 0 + (-1) = -1
M[0][2] = M[0][1] + gap_penalty = -1 + (-1) = -2
e assim por diante...
Exemplo para inicializar a primeira coluna:
M[1][0] = M[0][0] + gap_penalty = 0 + (-1) = -1
M[2][0] = M[1][0] + gap_penalty = -1 + (-1) = -2
e assim por diante...
Algoritmo de Needleman-Wunsch
8
Iremos alinhar as sequências GCAT e GAT.
Supor os valores para os seguintes parâmetros:
match = 1, mismatch = -1, gap_penalty = -1
Preenchemos a primeira linha e primeira coluna:
Algoritmo de Needleman-Wunsch
- G C A T
- 0 -1 -2 -3 -4
G -1
A -2
T -3
9
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 Needleman-Wunsch
- G C A T
- 0 -1 -2 -3 -4
G -1 ?
A -2
T -3
10
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 Needleman-Wunsch
- G C A T
- 0 -1 -2 -3 -4
G -1 ?
A -2
T -3
11
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 Needleman-Wunsch
- G C A T
- 0 -1 -2 -3 -4
G -1 ?
A -2
T -3
12
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) = (-1) + (-1) = -2
Algoritmo de Needleman-Wunsch
- G C A T
- 0 -1 -2 -3 -4
G -1 ?
A -2
T -3
13
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) = (-1) + (-1) = -2
Algoritmo de Needleman-Wunsch
- G C A T
- 0 -1 -2 -3 -4
G -1 ?
A -2
T -3
14
Temos os valores da diagonal, do topo e da esquerda:
diagonal = 1, topo = -2, esquerda = -2
Para saber o M[1][1] basta calcular o máximo desses valores:
M[1][1] = max(1, -2, -2) = 1
Algoritmo de Needleman-Wunsch
- G C A T
- 0 -1 -2 -3 -4
G -1 ?
A -2
T -3
15
Agora iremos calcular o M[1][2]:
diagonal = -1 + (-1) (mismatch) = -2
topo = -2 + (-1) = -3
esquerda = -1 + (-1) = 0
M[1][2] = max(-2, -3, 0) = 0
Algoritmo de Needleman-Wunsch
- G C A T
- 0 -1 -2 -3 -4
G -1 1 ?
A -2
T -3
16
Matriz preenchida:
Algoritmo de Needleman-Wunsch
- G C A T
- 0 -1 -2 -3 -4
G -1 1 0 -1 -2
A -2 0 0 1 0
T -3 -1 -1 0 2
17
O algoritmo permite reconhecer qual a célula que deu origem
a cada entrada da matriz. Essa precedência é indicada pelas
setas:
Essas setas é o nosso traceback que utilizaremos para
realizar o alinhamento.
Algoritmo de Needleman-Wunsch
- G C A T
- 0 -1 -2 -3 -4
G -1 1 0 -1 -2
A -2 0 0 1 0
T -3 -1 -1 0 2
18
Para construir o alinhamento, começa-se pela última célula
que foi preenchida, para o nosso exemplo é a M[3][4] que
possui o valor 2.
Utilizaremos a orientação das setas para construir o
alinhamento.
Algoritmo de Needleman-Wunsch
- G C A T
- 0 -1 -2 -3 -4
G -1 1 0 -1 -2
A -2 0 0 1 0
T -3 -1 -1 0 2
19
M[3][4] veio da diagonal, então as duas sequências recebem
caracteres.
Sequência 1: T
Sequência 2: T
Algoritmo de Needleman-Wunsch
- G C A T
- 0 -1 -2 -3 -4
G -1 1 0 -1 -2
A -2 0 0 1 0
T -3 -1 -1 0 2
20
M[2][3] veio da diagonal, então as duas sequências recebem
caracteres.
Sequência 1: AT
Sequência 2: AT
Algoritmo de Needleman-Wunsch
- G C A T
- 0 -1 -2 -3 -4
G -1 1 0 -1 -2
A -2 0 0 1 0
T -3 -1 -1 0 2
21
M[1][2] veio da esquerda, então coloca-se o caractere na
sequência 1 e a lacuna (gap) na sequência 2.
Sequência 1: CAT
Sequência 2: -AT
Algoritmo de Needleman-Wunsch
- G C A T
- 0 -1 -2 -3 -4
G -1 1 0 -1 -2
A -2 0 0 1 0
T -3 -1 -1 0 2
22
M[1][1] veio da diagonal, então as duas sequências recebem
caracteres.
Sequência 1: GCAT
Sequência 2: G-AT
Algoritmo de Needleman-Wunsch
- G C A T
- 0 -1 -2 -3 -4
G -1 1 0 -1 -2
A -2 0 0 1 0
T -3 -1 -1 0 2
23
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 Needleman-Wunsch
- G C A T
- 0 -1 -2 -3 -4
G -1 1 0 -1 -2
A -2 0 0 1 0
T -3 -1 -1 0 2
24
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/n
eedleman_wunsch
Para executar o nosso exemplo basta fazer:
python needleman_wunsch.py GCAT GAT 1 -1 -1
GCAT e GAT são as sequências. 1, -1 e -1 são os parâmetros
match, mismatch e gap_penalty respectivamente.
Implementação
25
Dúvidas?
mcastrosouza@live.com
Obrigado!
26
http://www.cs.utoronto.ca/~brudno/bcb410/lec2notes.pdf
http://web.ist.utl.pt/ist155746/relatorio_2_bc.pdf
http://en.wikipedia.org/wiki/Needleman-Wunsch_algorithm
Referências

Mais conteúdo relacionado

Mais procurados

2ª Lista de Exercícios Microbiologia
2ª Lista de Exercícios Microbiologia 2ª Lista de Exercícios Microbiologia
2ª Lista de Exercícios Microbiologia
Tiago da Silva
 

Mais procurados (20)

Aula 3 testes de hipóteses e anova
Aula 3   testes de hipóteses e anovaAula 3   testes de hipóteses e anova
Aula 3 testes de hipóteses e anova
 
Aula imunidade-inata-20-03-20121
Aula imunidade-inata-20-03-20121Aula imunidade-inata-20-03-20121
Aula imunidade-inata-20-03-20121
 
Conceitos e classificação da ciência
Conceitos e classificação da ciênciaConceitos e classificação da ciência
Conceitos e classificação da ciência
 
Aula inferencia
Aula inferenciaAula inferencia
Aula inferencia
 
Tipagem sanguinea
Tipagem sanguineaTipagem sanguinea
Tipagem sanguinea
 
ICSA17 - Introdução e Conceitos Básicos em Imunologia
ICSA17 - Introdução e Conceitos Básicos em ImunologiaICSA17 - Introdução e Conceitos Básicos em Imunologia
ICSA17 - Introdução e Conceitos Básicos em Imunologia
 
Linfócitos B
Linfócitos BLinfócitos B
Linfócitos B
 
ICSA17 - Autoimunidade
ICSA17 - Autoimunidade ICSA17 - Autoimunidade
ICSA17 - Autoimunidade
 
Imunidade nas mucosas e secreções
Imunidade nas mucosas e secreçõesImunidade nas mucosas e secreções
Imunidade nas mucosas e secreções
 
Sistema imunitário ppt
Sistema imunitário pptSistema imunitário ppt
Sistema imunitário ppt
 
2ª Lista de Exercícios Microbiologia
2ª Lista de Exercícios Microbiologia 2ª Lista de Exercícios Microbiologia
2ª Lista de Exercícios Microbiologia
 
Teoria Lista Exercicios 1.0
Teoria Lista Exercicios 1.0Teoria Lista Exercicios 1.0
Teoria Lista Exercicios 1.0
 
Lista de exercícios - estrutura atômica e distribuição eletrônica
Lista de exercícios - estrutura atômica e distribuição eletrônicaLista de exercícios - estrutura atômica e distribuição eletrônica
Lista de exercícios - estrutura atômica e distribuição eletrônica
 
Sistema complemento
Sistema complementoSistema complemento
Sistema complemento
 
III Bases Cromossômicas da herança
III Bases Cromossômicas da herançaIII Bases Cromossômicas da herança
III Bases Cromossômicas da herança
 
Aula 2 - encontrando similaridades de sequências
Aula 2  - encontrando similaridades de sequênciasAula 2  - encontrando similaridades de sequências
Aula 2 - encontrando similaridades de sequências
 
Polímeros
PolímerosPolímeros
Polímeros
 
estatisitica basica para saude aula 03
estatisitica basica para saude aula 03 estatisitica basica para saude aula 03
estatisitica basica para saude aula 03
 
Slides da aula de Biologia (Marcelo) sobre Introdução à Citogenética
Slides da aula de Biologia (Marcelo) sobre Introdução à CitogenéticaSlides da aula de Biologia (Marcelo) sobre Introdução à Citogenética
Slides da aula de Biologia (Marcelo) sobre Introdução à Citogenética
 
Sistema Complemento
Sistema ComplementoSistema Complemento
Sistema Complemento
 

Semelhante a Algoritmo Needleman-Wunsch

Equações e inequações trigonométricas
Equações e inequações trigonométricasEquações e inequações trigonométricas
Equações e inequações trigonométricas
Arthur Moreira
 
Implementação mód4 - encontro 1-
Implementação   mód4 - encontro 1-Implementação   mód4 - encontro 1-
Implementação mód4 - encontro 1-
inechidias
 
Implementação módulo4
Implementação   módulo4 Implementação   módulo4
Implementação módulo4
inechidias
 
Determinantes sistemas lineares
Determinantes sistemas linearesDeterminantes sistemas lineares
Determinantes sistemas lineares
ISJ
 
Determinantes Sistemas Lineares
Determinantes Sistemas LinearesDeterminantes Sistemas Lineares
Determinantes Sistemas Lineares
ISJ
 
Determinantes sistemas lineares
Determinantes sistemas linearesDeterminantes sistemas lineares
Determinantes sistemas lineares
ISJ
 
Determinantes sistemas lineares
Determinantes sistemas linearesDeterminantes sistemas lineares
Determinantes sistemas lineares
Antonio Carneiro
 
Relatório do projecto computacional grupo 72
Relatório do projecto computacional   grupo 72Relatório do projecto computacional   grupo 72
Relatório do projecto computacional grupo 72
Rafael Lucas
 
Método de Euler Progressivo
Método de Euler Progressivo Método de Euler Progressivo
Método de Euler Progressivo
Rafael Lucas
 
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6
Bowman Guimaraes
 
19 algoritmos de enumeracao
19   algoritmos de enumeracao19   algoritmos de enumeracao
19 algoritmos de enumeracao
Ricardo Bolanho
 

Semelhante a Algoritmo Needleman-Wunsch (20)

Equações e inequações trigonométricas
Equações e inequações trigonométricasEquações e inequações trigonométricas
Equações e inequações trigonométricas
 
Aula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptAula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.ppt
 
Aula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).pptAula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).ppt
 
Aula 4 poe
Aula 4 poeAula 4 poe
Aula 4 poe
 
Implementação mód4 - encontro 1-
Implementação   mód4 - encontro 1-Implementação   mód4 - encontro 1-
Implementação mód4 - encontro 1-
 
Implementação módulo4
Implementação   módulo4 Implementação   módulo4
Implementação módulo4
 
15022014
1502201415022014
15022014
 
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
 
Lista 1 - Robótica (Jim & Ronie)
Lista 1 - Robótica (Jim & Ronie)Lista 1 - Robótica (Jim & Ronie)
Lista 1 - Robótica (Jim & Ronie)
 
Determinantes sistemas lineares
Determinantes sistemas linearesDeterminantes sistemas lineares
Determinantes sistemas lineares
 
0001
00010001
0001
 
000003 complexidade
000003 complexidade000003 complexidade
000003 complexidade
 
Relatório do projecto computacional grupo 72
Relatório do projecto computacional   grupo 72Relatório do projecto computacional   grupo 72
Relatório do projecto computacional grupo 72
 
Método de Euler Progressivo
Método de Euler Progressivo Método de Euler Progressivo
Método de Euler Progressivo
 
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6
Www.uff.br gma informacoes disciplinas_calc 03 -a- 2012-2_lista 6
 
Determinantes
DeterminantesDeterminantes
Determinantes
 
MODEL-REFERENCE ADAPTIVE SYSTEMS (MRAS)
MODEL-REFERENCE ADAPTIVE SYSTEMS (MRAS)MODEL-REFERENCE ADAPTIVE SYSTEMS (MRAS)
MODEL-REFERENCE ADAPTIVE SYSTEMS (MRAS)
 
19 algoritmos de enumeracao
19   algoritmos de enumeracao19   algoritmos de enumeracao
19 algoritmos de enumeracao
 

Mais de Marcos Castro

Mais de Marcos Castro (20)

Árvores de Decisão
Árvores de DecisãoÁrvores de Decisão
Árvores de Decisão
 
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
 
Arquivos FASTQ
Arquivos FASTQArquivos FASTQ
Arquivos FASTQ
 
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
 
Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro Viajante
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated Annealing
 
Expressões Regulares com Python 3
Expressões Regulares com Python 3Expressões Regulares com Python 3
Expressões Regulares com Python 3
 
Algoritmos gulosos
Algoritmos gulososAlgoritmos gulosos
Algoritmos gulosos
 
Programação dinâmica
Programação dinâmicaProgramação dinâmica
Programação dinâmica
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFS
 
Análise Assintótica
Análise AssintóticaAnálise Assintótica
Análise Assintótica
 
Listas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosListas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionários
 
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
 

Algoritmo Needleman-Wunsch

  • 2. 2 Introdução O Algoritmo de Needleman-Wunsch é utilizado em Bioinformática para realizar o alinhamento global de sequências de proteínas ou nucleotídeos. Essa foi uma das primeiras aplicações que utilizaram programação dinâmica para comparar sequências biológicas. O algoritmo leva o nome dos seus autores: Needleman e Wunsch.
  • 3. 3 Alinhamento global vs local Alinhamento global é um alinhamento que se faz em toda a extensão da sequência. No alinhamento local se procura alinhar fragmentos das sequências e não toda a extensão das mesmas. O algoritmo de Needleman-Wunsch realiza o alinhamento global garantindo solução ótima.
  • 4. 4 Algoritmo de Needleman-Wunsch 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.
  • 5. 5 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 Needleman-Wunsch
  • 6. 6 Algoritmo de Needleman-Wunsch O M[0][0] será 0. O restante dos elementos da primeira linha serão preenchidos da seguinte forma: M[0][i] = M[0][i - 1] + gap_penalty (i > 0) O restante dos elementos da primeira coluna serão preenchidos da seguinte forma: M[j][0] = M[j - 1][0] + gap_penalty (j > 0)
  • 7. 7 Exemplo para inicializar a primeira linha: gap_penalty = -1 M[0][1] = M[0][0] + gap_penalty = 0 + (-1) = -1 M[0][2] = M[0][1] + gap_penalty = -1 + (-1) = -2 e assim por diante... Exemplo para inicializar a primeira coluna: M[1][0] = M[0][0] + gap_penalty = 0 + (-1) = -1 M[2][0] = M[1][0] + gap_penalty = -1 + (-1) = -2 e assim por diante... Algoritmo de Needleman-Wunsch
  • 8. 8 Iremos alinhar as sequências GCAT e GAT. Supor os valores para os seguintes parâmetros: match = 1, mismatch = -1, gap_penalty = -1 Preenchemos a primeira linha e primeira coluna: Algoritmo de Needleman-Wunsch - G C A T - 0 -1 -2 -3 -4 G -1 A -2 T -3
  • 9. 9 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 Needleman-Wunsch - G C A T - 0 -1 -2 -3 -4 G -1 ? A -2 T -3
  • 10. 10 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 Needleman-Wunsch - G C A T - 0 -1 -2 -3 -4 G -1 ? A -2 T -3
  • 11. 11 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 Needleman-Wunsch - G C A T - 0 -1 -2 -3 -4 G -1 ? A -2 T -3
  • 12. 12 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) = (-1) + (-1) = -2 Algoritmo de Needleman-Wunsch - G C A T - 0 -1 -2 -3 -4 G -1 ? A -2 T -3
  • 13. 13 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) = (-1) + (-1) = -2 Algoritmo de Needleman-Wunsch - G C A T - 0 -1 -2 -3 -4 G -1 ? A -2 T -3
  • 14. 14 Temos os valores da diagonal, do topo e da esquerda: diagonal = 1, topo = -2, esquerda = -2 Para saber o M[1][1] basta calcular o máximo desses valores: M[1][1] = max(1, -2, -2) = 1 Algoritmo de Needleman-Wunsch - G C A T - 0 -1 -2 -3 -4 G -1 ? A -2 T -3
  • 15. 15 Agora iremos calcular o M[1][2]: diagonal = -1 + (-1) (mismatch) = -2 topo = -2 + (-1) = -3 esquerda = -1 + (-1) = 0 M[1][2] = max(-2, -3, 0) = 0 Algoritmo de Needleman-Wunsch - G C A T - 0 -1 -2 -3 -4 G -1 1 ? A -2 T -3
  • 16. 16 Matriz preenchida: Algoritmo de Needleman-Wunsch - G C A T - 0 -1 -2 -3 -4 G -1 1 0 -1 -2 A -2 0 0 1 0 T -3 -1 -1 0 2
  • 17. 17 O algoritmo permite reconhecer qual a célula que deu origem a cada entrada da matriz. Essa precedência é indicada pelas setas: Essas setas é o nosso traceback que utilizaremos para realizar o alinhamento. Algoritmo de Needleman-Wunsch - G C A T - 0 -1 -2 -3 -4 G -1 1 0 -1 -2 A -2 0 0 1 0 T -3 -1 -1 0 2
  • 18. 18 Para construir o alinhamento, começa-se pela última célula que foi preenchida, para o nosso exemplo é a M[3][4] que possui o valor 2. Utilizaremos a orientação das setas para construir o alinhamento. Algoritmo de Needleman-Wunsch - G C A T - 0 -1 -2 -3 -4 G -1 1 0 -1 -2 A -2 0 0 1 0 T -3 -1 -1 0 2
  • 19. 19 M[3][4] veio da diagonal, então as duas sequências recebem caracteres. Sequência 1: T Sequência 2: T Algoritmo de Needleman-Wunsch - G C A T - 0 -1 -2 -3 -4 G -1 1 0 -1 -2 A -2 0 0 1 0 T -3 -1 -1 0 2
  • 20. 20 M[2][3] veio da diagonal, então as duas sequências recebem caracteres. Sequência 1: AT Sequência 2: AT Algoritmo de Needleman-Wunsch - G C A T - 0 -1 -2 -3 -4 G -1 1 0 -1 -2 A -2 0 0 1 0 T -3 -1 -1 0 2
  • 21. 21 M[1][2] veio da esquerda, então coloca-se o caractere na sequência 1 e a lacuna (gap) na sequência 2. Sequência 1: CAT Sequência 2: -AT Algoritmo de Needleman-Wunsch - G C A T - 0 -1 -2 -3 -4 G -1 1 0 -1 -2 A -2 0 0 1 0 T -3 -1 -1 0 2
  • 22. 22 M[1][1] veio da diagonal, então as duas sequências recebem caracteres. Sequência 1: GCAT Sequência 2: G-AT Algoritmo de Needleman-Wunsch - G C A T - 0 -1 -2 -3 -4 G -1 1 0 -1 -2 A -2 0 0 1 0 T -3 -1 -1 0 2
  • 23. 23 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 Needleman-Wunsch - G C A T - 0 -1 -2 -3 -4 G -1 1 0 -1 -2 A -2 0 0 1 0 T -3 -1 -1 0 2
  • 24. 24 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/n eedleman_wunsch Para executar o nosso exemplo basta fazer: python needleman_wunsch.py GCAT GAT 1 -1 -1 GCAT e GAT são as sequências. 1, -1 e -1 são os parâmetros match, mismatch e gap_penalty respectivamente. Implementação