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

15 funcoes essenciais_unidade2
15 funcoes essenciais_unidade215 funcoes essenciais_unidade2
15 funcoes essenciais_unidade2AnaMartins532
 
(63 alíneas) Exercicios resolvidos sobre logaritmos e equações logaritmicas
(63 alíneas) Exercicios resolvidos sobre logaritmos e equações logaritmicas (63 alíneas) Exercicios resolvidos sobre logaritmos e equações logaritmicas
(63 alíneas) Exercicios resolvidos sobre logaritmos e equações logaritmicas wilkerfilipel
 
Slides- Progressão Geométrica
Slides- Progressão GeométricaSlides- Progressão Geométrica
Slides- Progressão GeométricaKetlin Cavane
 
Matemática Discreta - Parte V relações
Matemática Discreta - Parte V relaçõesMatemática Discreta - Parte V relações
Matemática Discreta - Parte V relaçõesUlrich Schiel
 
Atividades revisão de matemática 8º ano
Atividades revisão de matemática   8º anoAtividades revisão de matemática   8º ano
Atividades revisão de matemática 8º anoTalita mmzt
 
Mat utfrs 09. monomios e polinomios exercicios
Mat utfrs 09. monomios e polinomios exerciciosMat utfrs 09. monomios e polinomios exercicios
Mat utfrs 09. monomios e polinomios exerciciostrigono_metria
 
Lugares geométricos
Lugares geométricosLugares geométricos
Lugares geométricossaramramos
 
8971 circunferencia trigonometrica
8971 circunferencia trigonometrica8971 circunferencia trigonometrica
8971 circunferencia trigonometricaRobson Aguiar
 
Planejamento Matrizes e determinantes
Planejamento Matrizes e determinantesPlanejamento Matrizes e determinantes
Planejamento Matrizes e determinantesMarcieleEuzebio
 
4ª Lista de Exercícios – Logaritmos
4ª Lista de Exercícios – Logaritmos4ª Lista de Exercícios – Logaritmos
4ª Lista de Exercícios – Logaritmosceliomelosouza
 
Representar um conjunto por extensão e por compreensão e diagrama de venus
Representar um conjunto por extensão e por compreensão e diagrama de venusRepresentar um conjunto por extensão e por compreensão e diagrama de venus
Representar um conjunto por extensão e por compreensão e diagrama de venusPaulo Mutolo
 
Análise de Algoritmos - Indução Finita
Análise de Algoritmos - Indução FinitaAnálise de Algoritmos - Indução Finita
Análise de Algoritmos - Indução FinitaDelacyr Ferreira
 
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)Marcos Castro
 
Probabilidade Exercícios
Probabilidade Exercícios Probabilidade Exercícios
Probabilidade Exercícios Willian Sérgio
 
Gráfico (seno e cosseno)
Gráfico (seno e cosseno)Gráfico (seno e cosseno)
Gráfico (seno e cosseno)neliosnahum
 
Estudo de uma função
Estudo de uma funçãoEstudo de uma função
Estudo de uma função21614
 
2ª lista de exerc(monomios e polinômios) 8º ano ilton bruno
2ª lista de exerc(monomios e polinômios) 8º ano   ilton bruno2ª lista de exerc(monomios e polinômios) 8º ano   ilton bruno
2ª lista de exerc(monomios e polinômios) 8º ano ilton brunoIlton Bruno
 

Mais procurados (20)

15 funcoes essenciais_unidade2
15 funcoes essenciais_unidade215 funcoes essenciais_unidade2
15 funcoes essenciais_unidade2
 
(63 alíneas) Exercicios resolvidos sobre logaritmos e equações logaritmicas
(63 alíneas) Exercicios resolvidos sobre logaritmos e equações logaritmicas (63 alíneas) Exercicios resolvidos sobre logaritmos e equações logaritmicas
(63 alíneas) Exercicios resolvidos sobre logaritmos e equações logaritmicas
 
Slides- Progressão Geométrica
Slides- Progressão GeométricaSlides- Progressão Geométrica
Slides- Progressão Geométrica
 
Matemática Discreta - Parte V relações
Matemática Discreta - Parte V relaçõesMatemática Discreta - Parte V relações
Matemática Discreta - Parte V relações
 
Atividades revisão de matemática 8º ano
Atividades revisão de matemática   8º anoAtividades revisão de matemática   8º ano
Atividades revisão de matemática 8º ano
 
Mat utfrs 09. monomios e polinomios exercicios
Mat utfrs 09. monomios e polinomios exerciciosMat utfrs 09. monomios e polinomios exercicios
Mat utfrs 09. monomios e polinomios exercicios
 
Lugares geométricos
Lugares geométricosLugares geométricos
Lugares geométricos
 
8971 circunferencia trigonometrica
8971 circunferencia trigonometrica8971 circunferencia trigonometrica
8971 circunferencia trigonometrica
 
Planejamento Matrizes e determinantes
Planejamento Matrizes e determinantesPlanejamento Matrizes e determinantes
Planejamento Matrizes e determinantes
 
4ª Lista de Exercícios – Logaritmos
4ª Lista de Exercícios – Logaritmos4ª Lista de Exercícios – Logaritmos
4ª Lista de Exercícios – Logaritmos
 
Representar um conjunto por extensão e por compreensão e diagrama de venus
Representar um conjunto por extensão e por compreensão e diagrama de venusRepresentar um conjunto por extensão e por compreensão e diagrama de venus
Representar um conjunto por extensão e por compreensão e diagrama de venus
 
Análise de Algoritmos - Indução Finita
Análise de Algoritmos - Indução FinitaAnálise de Algoritmos - Indução Finita
Análise de Algoritmos - Indução Finita
 
Funcao exponencial
Funcao exponencialFuncao exponencial
Funcao exponencial
 
Lei dos senos e cossenos
Lei dos senos e cossenosLei dos senos e cossenos
Lei dos senos e cossenos
 
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)
 
Probabilidade Exercícios
Probabilidade Exercícios Probabilidade Exercícios
Probabilidade Exercícios
 
Gráfico (seno e cosseno)
Gráfico (seno e cosseno)Gráfico (seno e cosseno)
Gráfico (seno e cosseno)
 
Estudo de uma função
Estudo de uma funçãoEstudo de uma função
Estudo de uma função
 
2ª lista de exerc(monomios e polinômios) 8º ano ilton bruno
2ª lista de exerc(monomios e polinômios) 8º ano   ilton bruno2ª lista de exerc(monomios e polinômios) 8º ano   ilton bruno
2ª lista de exerc(monomios e polinômios) 8º ano ilton bruno
 
Sequencias e series calculo
Sequencias e series   calculoSequencias e series   calculo
Sequencias e series calculo
 

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étricasArthur Moreira
 
Aula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptAula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptssuserd654cb1
 
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).pptssuserd654cb1
 
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 linearesISJ
 
Determinantes Sistemas Lineares
Determinantes Sistemas LinearesDeterminantes Sistemas Lineares
Determinantes Sistemas LinearesISJ
 
Determinantes sistemas lineares
Determinantes sistemas linearesDeterminantes sistemas lineares
Determinantes sistemas linearesISJ
 
Lista 1 - Robótica (Jim & Ronie)
Lista 1 - Robótica (Jim & Ronie)Lista 1 - Robótica (Jim & Ronie)
Lista 1 - Robótica (Jim & Ronie)Jim Naturesa
 
Determinantes sistemas lineares
Determinantes sistemas linearesDeterminantes sistemas lineares
Determinantes sistemas linearesAntonio 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 72Rafael 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 6Bowman Guimaraes
 
MODEL-REFERENCE ADAPTIVE SYSTEMS (MRAS)
MODEL-REFERENCE ADAPTIVE SYSTEMS (MRAS)MODEL-REFERENCE ADAPTIVE SYSTEMS (MRAS)
MODEL-REFERENCE ADAPTIVE SYSTEMS (MRAS)Pedro Barata
 
19 algoritmos de enumeracao
19   algoritmos de enumeracao19   algoritmos de enumeracao
19 algoritmos de enumeracaoRicardo 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

Árvores de Decisão
Árvores de DecisãoÁrvores de Decisão
Árvores de DecisãoMarcos Castro
 
Colored de Bruijn Graphs
Colored de Bruijn GraphsColored de Bruijn Graphs
Colored de Bruijn GraphsMarcos Castro
 
Maratona de Programação
Maratona de ProgramaçãoMaratona de Programação
Maratona de ProgramaçãoMarcos Castro
 
Ferramentas para Bioinformática
Ferramentas para BioinformáticaFerramentas para Bioinformática
Ferramentas para BioinformáticaMarcos Castro
 
A importância da Bioinformática
A importância da BioinformáticaA importância da Bioinformática
A importância da BioinformáticaMarcos Castro
 
Redes Neurais Artificiais
Redes Neurais ArtificiaisRedes Neurais Artificiais
Redes Neurais ArtificiaisMarcos Castro
 
Problema do Caixeiro Viajante
Problema do Caixeiro ViajanteProblema do Caixeiro Viajante
Problema do Caixeiro ViajanteMarcos Castro
 
Metaheurística Simulated Annealing
Metaheurística Simulated AnnealingMetaheurística Simulated Annealing
Metaheurística Simulated AnnealingMarcos Castro
 
Expressões Regulares com Python 3
Expressões Regulares com Python 3Expressões Regulares com Python 3
Expressões Regulares com Python 3Marcos Castro
 
Programação dinâmica
Programação dinâmicaProgramação dinâmica
Programação dinâmicaMarcos Castro
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFSMarcos Castro
 
Análise Assintótica
Análise AssintóticaAnálise Assintótica
Análise AssintóticaMarcos Castro
 
Listas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosListas, tuplas, conjuntos e dicionários
Listas, tuplas, conjuntos e dicionáriosMarcos Castro
 
Python - Dicionários
Python - DicionáriosPython - Dicionários
Python - DicionáriosMarcos 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
 

Último

NEUROCIENCIA I (1).ppt aula explicativa 1
NEUROCIENCIA I (1).ppt aula explicativa 1NEUROCIENCIA I (1).ppt aula explicativa 1
NEUROCIENCIA I (1).ppt aula explicativa 1conselhosade2
 
Apresentação sobre o cientista linus pauling.pptx
Apresentação sobre o cientista linus pauling.pptxApresentação sobre o cientista linus pauling.pptx
Apresentação sobre o cientista linus pauling.pptxTatianaMalcher
 
Historia da Agricultura Agronomia 2017.pptx
Historia da Agricultura Agronomia 2017.pptxHistoria da Agricultura Agronomia 2017.pptx
Historia da Agricultura Agronomia 2017.pptxCarlosMelo486412
 
Bilhete de Identidade sobre o Tungsténio.pptx
Bilhete de Identidade sobre o Tungsténio.pptxBilhete de Identidade sobre o Tungsténio.pptx
Bilhete de Identidade sobre o Tungsténio.pptxSusanaRangel12
 
Estudo Dirigido Sistema Cardiovascular - 8°.docx
Estudo Dirigido Sistema Cardiovascular - 8°.docxEstudo Dirigido Sistema Cardiovascular - 8°.docx
Estudo Dirigido Sistema Cardiovascular - 8°.docxDanielaMayraArajoOli1
 
FOUCAULT, Michel. A coragem da verdade.pdf
FOUCAULT, Michel. A coragem da verdade.pdfFOUCAULT, Michel. A coragem da verdade.pdf
FOUCAULT, Michel. A coragem da verdade.pdfRobertoLopes438472
 
Planejamento do viveiro de mudas florestais
Planejamento do viveiro de mudas florestaisPlanejamento do viveiro de mudas florestais
Planejamento do viveiro de mudas florestaisandersonwebler1
 

Último (7)

NEUROCIENCIA I (1).ppt aula explicativa 1
NEUROCIENCIA I (1).ppt aula explicativa 1NEUROCIENCIA I (1).ppt aula explicativa 1
NEUROCIENCIA I (1).ppt aula explicativa 1
 
Apresentação sobre o cientista linus pauling.pptx
Apresentação sobre o cientista linus pauling.pptxApresentação sobre o cientista linus pauling.pptx
Apresentação sobre o cientista linus pauling.pptx
 
Historia da Agricultura Agronomia 2017.pptx
Historia da Agricultura Agronomia 2017.pptxHistoria da Agricultura Agronomia 2017.pptx
Historia da Agricultura Agronomia 2017.pptx
 
Bilhete de Identidade sobre o Tungsténio.pptx
Bilhete de Identidade sobre o Tungsténio.pptxBilhete de Identidade sobre o Tungsténio.pptx
Bilhete de Identidade sobre o Tungsténio.pptx
 
Estudo Dirigido Sistema Cardiovascular - 8°.docx
Estudo Dirigido Sistema Cardiovascular - 8°.docxEstudo Dirigido Sistema Cardiovascular - 8°.docx
Estudo Dirigido Sistema Cardiovascular - 8°.docx
 
FOUCAULT, Michel. A coragem da verdade.pdf
FOUCAULT, Michel. A coragem da verdade.pdfFOUCAULT, Michel. A coragem da verdade.pdf
FOUCAULT, Michel. A coragem da verdade.pdf
 
Planejamento do viveiro de mudas florestais
Planejamento do viveiro de mudas florestaisPlanejamento do viveiro de mudas florestais
Planejamento do viveiro de mudas florestais
 

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