Universidade Estadual de Londrina
Centro de Tecnologia e Urbanismo
Departamento de Engenharia Elétrica
Alinhamento de Seqüências Biológicas Utilizando
Algoritmo Genético e Processamento Distribuı́do
Paulo Eduardo Mologni da Silva
Orientador
Prof. Dr. Ailton Akira Shinoda - UNESP/Ilha Solteira-SP
Banca Examinadora
Prof. Dr. Ailton Akira Shinoda - Presidente
Prof. Dr. Marcelo Carvalho Tosin - UEL/Londrina-PR
Profa. Dra. Maria Angélica de O. Camargo Brunetto - UEL/Londrina-PR
Dissertação submetida ao Departamento de Engenharia Elétrica
da Universidade Estadual de Londrina, para preenchimento
dos pré-requisitos parciais para obtenção do tı́tulo de
Mestre em Engenharia Elétrica
Londrina, 24 de março de 2005
Dedico este trabalho à toda minha famı́lia e amigos.
iii
Resumo
Este trabalho descreve um método alternativo para encontrar o alinhamento
ótimo de seqüências de nucleotı́deos utilizando Algoritmo Genético (AG). A seqüência
alinhada leva em conta o cromossomo e cada cromossomo é associado com uma
função objetiva (função de aptidão) baseada na matriz de substituição BLOSUM50
e implementado na linguagem C++ (Linux e Windows) com uma biblioteca de
programação distribuı́da (Messaging Passing Interface - MPI).
Duas implementações do algoritmo proposto foram analisadas, a primeira sem
o recurso de processamento distribuı́do (AG Serial), e a segunda com o recurso (AG
Paralelo).
Os resultados obtidos mostraram que o método é eficaz.
i
Abstract
This work describes an alternative method based on Genetic Algorithm (GA)
to find the optimal pair-wise alignment. The alignment sequence takes into account
the chromosome and each chromosome is associated with a fitness function based
on BLOSUM50 substitution matrix implemented in the C++ language (Linux e
Windows) with a distributed programming library (Messaging Passing Interface MPI).
Two implementations of the proposed algorithm were analyzed, the first without
the resource of distributed processing (Serial AG), and the second with the resource
(Parallel AG).
The obtained results showed that the method is effective.
ii
Agradecimentos
- A Deus e à minha famı́lia. Em especial: à minha esposa, à minha mãe e à minha
irmã as quais apoiaram-me e ajudaram-me muito; à minha tia Irene, grande incentivadora.
- Ao prof. Ailton Akira Shinoda, meu orientador, e ao prof. Carlos Dias Maciel,
co-orientador, pelo grande incentivo, apoio, amizade e profissionalismo;
- Aos demais amigos do curso: professores, funcionários e alunos que fizeram parte
desta caminhada;
- À CAPES pela bolsa de estudos;
- Ao CNPQ e à UEL pela infra-estrutura fornecida ao projeto intitulado: Análise
de Géis de Eletroforese, onde desenvolvemos este trabalho.
iii
Sumário
Resumo
i
Abstract
ii
Agradecimentos
iii
Sumário
iv
Lista de Figuras
vii
Lista de Tabelas
xii
Lista de Abreviaturas
xiv
Glossário
xvi
Introdução
xvii
1 Fundamentação
1.1
1
Fundamentos Biológicos . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.1.1
DNA: O Material Genético . . . . . . . . . . . . . . . . . . . .
1
1.1.2
Replicação do DNA: Transmissão da Informação Genética . .
3
1.1.3
Expressão Gênica: Controle do Crescimento e Desenvolvimento
4
iv
SUMÁRIO
1.1.4
Mutação: Mudanças no Material Genético com o Tempo . . .
1.1.5
Resumo:
8
Pontos Importantes . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2
1.3
Alinhamento de Seqüências Par-a-Par . . . . . . . . . . . . . . . . . . 12
1.2.1
Justificativa para o Alinhamento Protéico . . . . . . . . . . . 15
1.2.2
Gaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2.3
Modelo de Pontuação: Matriz de Pontuação . . . . . . . . . . 17
1.2.4
Algoritmos de alinhamentos . . . . . . . . . . . . . . . . . . . 23
1.2.5
Significância das Pontuações . . . . . . . . . . . . . . . . . . . 33
Algoritmos Genéticos . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.3.1
Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.3.2
Definição e Funcionamento . . . . . . . . . . . . . . . . . . . . 38
1.3.3
Algoritmo Genético Paralelo . . . . . . . . . . . . . . . . . . . 43
2 Métodos e Materiais
2.1
2.2
2.3
50
Ambiente de Simulação . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.1.1
Linguagens de Programação Utilizadas . . . . . . . . . . . . . 50
2.1.2
Estrutura das Máquinas Utilizadas . . . . . . . . . . . . . . . 51
Alinhamento Biológico Através do Algoritmo Genético . . . . . . . . 52
2.2.1
Aproximação AG . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.2.2
Mutação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.2.3
Dados Utilizados no AG Serial . . . . . . . . . . . . . . . . . . 62
Alinhamento Biológico Através do Algoritmo Genético Paralelo . . . 64
2.3.1
Computação Distribuı́da . . . . . . . . . . . . . . . . . . . . . 64
2.3.2
AG no Ambiente Distribuı́do . . . . . . . . . . . . . . . . . . . 69
2.3.3
Aproximação AG Paralela . . . . . . . . . . . . . . . . . . . . 71
v
SUMÁRIO
2.3.4
Dados Utilizados no AG Paralelo . . . . . . . . . . . . . . . . 76
3 Resultados
3.1
77
Análise de Desempenho do AG Serial Proposto
. . . . . . . . . . . . 78
3.1.1
Análise de Desempenho: Seqüencias SEQex1 e SEQex2 . . . . 79
3.1.2
Análise de Desempenho: Seqüencias P69905 e P68871 . . . . . 82
3.1.3
Tempo de Manipulação de Instâncias de Objetos versus Tempo
de Processamento . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.2
Comparação dos Resultados
do
AG
Serial
Proposto com o
Algoritmo de Needleman e Wunsch . . . . . . . . . . . . . . . . . . . 87
3.3
Comparação dos Resultados do AG Paralelo Proposto com o Algoritmo de Needleman e Wunsch . . . . . . . . . . . . . . . . . . . . . . 94
4 Conclusão
100
4.1
Conclusão dos Resultados do AG Serial . . . . . . . . . . . . . . . . . 100
4.2
Conclusão dos Resultados do AG Paralelo . . . . . . . . . . . . . . . 102
4.3
Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Referências Bibliográficas
104
vi
Lista de Figuras
1.1
Visão bidimensional da estrutura do DNA. A informação genética
dos seres vivos é armazenada nas grandes moléculas de DNA em
seqüências de pares de bases: A:T, T:A, G:C e C:G. . . . . . . . . . .
2
1.2
Replicação do DNA. A separação e a sı́ntese ocorrem de modo gradativo.
3
1.3
Exemplo da transcrição e tradução usando a sı́ntese da globina β humana. Durante a transcrição (etapa 1), o filamento de DNA é um molde para a sı́ntese de
um filamento de RNA complementar. O mRNA resultante (RNA mensageiro) é
transportado para o citoplasma. No citoplasma, a seqüência de bases do mRNA é
“traduzido” na seqüência de aminoácidos formando assim o polipeptı́dio do gene
de acordo com as regras do código genético. A tradução (etapa 2) ocorre em
estruturas complexas chamadas ribossomos. A sı́ntese de globina β final requer a
remoção pós-traducional da metionina terminal (etapa 3) [69]. . . . . . . . . .
7
1.4
Mutação: alteração em bases da seqüência de DNA [69]. . . . . . . . 10
1.5
Três alinhamentos de seqüências para um fragmento da globina α
humana. °
a Similaridade evidente para a globina β humana. °
b
Um alinhamento de forma estrutural razoável para a leghaemoglobina
do lupos amarelo. °
c Um alinhamento espúrio com alta pontuação
para uma glutationa homólogo do nematóide S-transferase chamada
F 11G11.2 [33]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.6
Alinhamento par-a-par das proteı́nas RBP (Retinol-Binding Protein)
humana e β-lactoglobulina bovina [34]. . . . . . . . . . . . . . . . . . 16
vii
LISTA DE FIGURAS
1.7
Duas seqüências usadas para ilustrar os algoritmos de programação
dinâmica. Elas estão arranjadas por par de resı́duos alinhados de
forma a mostrar os valores correspondentes da matriz BLOSUM50.
As pontuações positivas estão em negrito.
1.8
. . . . . . . . . . . . . . . 24
Três caminhos possı́veis para o alinhamento até (i, j): xi alinhado
com yj , xi alinhado com um gap e yj alinhado com um gap. . . . . . 26
1.9
F (i, j) obtido a partir dos três valores possı́veis. . . . . . . . . . . . . 26
1.10 Matriz da programação dinâmica global. As setas mais largas, apontando para valores (em negrito) do alinhamento ótimo, representam
os ponteiros do traceback. O valor no canto inferior direito da matriz
é a pontuação total do alinhamento ótimo. . . . . . . . . . . . . . . . 27
1.11 Alinhamento obtido a partir do processo de traceback da Figura 1.10
e posterior inversão das seqüências χ e ψ. . . . . . . . . . . . . . . . . 28
1.12 Matriz da programação dinâmica local. Alinhamento ótimo local com
pontuação 28. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.13 Alinhamento obtido a partir do processo de traceback da Figura 1.12
e posterior inversão das seqüências χ e ψ. . . . . . . . . . . . . . . . . 30
1.14 Tipos de sobreposição dos pares de seqüência x e y. . . . . . . . . . . 31
1.15 Cruzamento de dois cromossomos em apenas uma posição. . . . . . . 39
1.16 Mutação em uma posição do cromossomo biológico. . . . . . . . . . . 40
1.17 Mutação em uma posição do cromossomo binário. . . . . . . . . . . . 40
1.18 Fluxograma para exemplificar o algoritmo genético. . . . . . . . . . . 41
1.19 Estrutura convencional do algoritmo genético. . . . . . . . . . . . . . 42
1.20 AG Global em Arquitetura DSM. . . . . . . . . . . . . . . . . . . . . 44
1.21 Pseudo-código do AG Migração [32]. . . . . . . . . . . . . . . . . . . 45
1.22 Topologia de Migração em Anel ou Unidirecional. . . . . . . . . . . . 46
1.23 Topologia de Migração da Vizinhança ou Bidirecional. . . . . . . . . . 46
viii
LISTA DE FIGURAS
1.24 Topologia de Migração Irrestrita ou Multidirecional. . . . . . . . . . . 47
1.25 Topologia AG de Difusão. . . . . . . . . . . . . . . . . . . . . . . . . 48
1.26 Pseudo-código do AG de Difusão [32]. . . . . . . . . . . . . . . . . . . 49
2.1
Um possı́vel alinhamento. . . . . . . . . . . . . . . . . . . . . . . . . 52
2.2
Outro possı́vel alinhamento. . . . . . . . . . . . . . . . . . . . . . . . 53
2.3
Descrição da configuração cromossômica binária. . . . . . . . . . . . . 53
2.4
Função de aptidão (fitness function). . . . . . . . . . . . . . . . . . . 54
2.5
Representação de um alinhamento na aproximação AG. . . . . . . . . 55
2.6
Pais selecionados para a operação de cruzamento na aproximação AG. 56
2.7
Operação de cruzamento na aproximação AG. . . . . . . . . . . . . . 56
2.8
Filhos gerados após a operação de cruzamento na aproximação AG.
As duas primeiras linhas representam um filho e as duas últimas o
outro. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
2.9
Mutação AG: 2 pontos de mutação selecionados aleatoriamente. . . . 57
2.10 Mutação AG: executando a mutação nos 2 pontos selecionados. . . . 57
2.11 Mutação AG: alterando outras posições para manter o mesmo número
de aminoácidos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
2.12 Mutação AG: 2 pontos de mutação selecionados aleatoriamente. . . . 58
2.13 Mutação AG: executando a mutação nos 2 pontos selecionados. . . . 58
2.14 Mutação AG: alterando outras posições para manter o mesmo número
de aminoácidos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2.15 Fluxograma da aproximação AG. . . . . . . . . . . . . . . . . . . . . 60
2.16 Algoritmo da aproximação AG. . . . . . . . . . . . . . . . . . . . . . 61
2.17 Visão estratégica computacional [65]. . . . . . . . . . . . . . . . . . . 65
2.18 Esquema de processos MPI. . . . . . . . . . . . . . . . . . . . . . . . 70
ix
LISTA DE FIGURAS
2.19 Fluxograma da aproximação AG paralelo - processo mestre. . . . . . 71
2.20 Fluxograma da aproximação AG paralelo - processo escravo. . . . . . 72
2.21 Algoritmo da aproximação AG paralelo - processo mestre. . . . . . . 73
2.22 Algoritmo da aproximação AG paralelo - processo escravo. . . . . . . 74
2.23 Funcionamento do AG Paralelo. . . . . . . . . . . . . . . . . . . . . . 75
3.1
Desempenho do AG Serial sem RE (NRE) por probabilidade de mutação. 80
3.2
Desempenho do AG Serial com RE apenas uma vez. . . . . . . . . . . 80
3.3
Desempenho do AG Serial com RE a cada 10 gerações. . . . . . . . . 81
3.4
Desempenho do AG Serial com RE. . . . . . . . . . . . . . . . . . . . 81
3.5
Desempenho do AG Serial com RE a cada 10 gerações. . . . . . . . . 83
3.6
Desempenho do AG Serial com RE. . . . . . . . . . . . . . . . . . . . 83
3.7
Índice de convergência do AG Serial com RE a cada 10 gerações. . . . 84
3.8
Índice de convergência do AG Serial com RE. . . . . . . . . . . . . . 84
3.9
Tempo de Processamento x (RE e NRE com 50% e 100% de probabilidade de mutação). Seqüências: SEQex1 e SEQex2. . . . . . . . . . 85
3.10 Tempo de Processamento x (RE e NRE com 50% e 100% de probabilidade de mutação). Seqüências: P69905 e P68871. . . . . . . . . . 86
3.11 Fitness máximo (normalizado) no processo evolutivo das seqüências:
SEQex1 e SEQex2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.12 Fitness máximo (normalizado) no processo evolutivo das seqüências:
P69905 e P68871 (populacao1 ). . . . . . . . . . . . . . . . . . . . . . 90
3.13 Fitness máximo (normalizado) no processo evolutivo das seqüências:
P69905 e P68871 (populacao2 ). . . . . . . . . . . . . . . . . . . . . . 90
3.14 Fitness máximo (normalizado) no processo evolutivo das seqüências:
SMHY1C e SMRT1 (populacao1 ). . . . . . . . . . . . . . . . . . . . . 91
x
LISTA DE FIGURAS
3.15 Fitness máximo (normalizado) no processo evolutivo das seqüências:
SMHY1C e SMRT1 (populacao2 ). . . . . . . . . . . . . . . . . . . . . 91
3.16 Fitness máximo (normalizado) no processo evolutivo das seqüências:
P02185 e P69905 (populacao1 ). . . . . . . . . . . . . . . . . . . . . . 92
3.17 Fitness máximo (normalizado) no processo evolutivo das seqüências:
P02185 e P69905 (populacao2 ). . . . . . . . . . . . . . . . . . . . . . 92
3.18 Fitness máximo (normalizado) no processo evolutivo das seqüências:
P02185 e P68871 (populacao1 ). . . . . . . . . . . . . . . . . . . . . . 93
3.19 Fitness máximo (normalizado) no processo evolutivo das seqüências:
P02185 e P68871 (populacao2 ). . . . . . . . . . . . . . . . . . . . . . 93
3.20 Fitness máximo (normalizado) no processo evolutivo das seqüências:
SEQex1 e SEQex2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.21 Fitness máximo (normalizado) no processo evolutivo das seqüências:
P69905 e P68871 (populacao1 ). . . . . . . . . . . . . . . . . . . . . . 96
3.22 Fitness máximo (normalizado) no processo evolutivo das seqüências:
P69905 e P68871 (populacao2 ). . . . . . . . . . . . . . . . . . . . . . 96
3.23 Fitness máximo (normalizado) no processo evolutivo das seqüências:
SMHY1C e SMRT1 (populacao1 ). . . . . . . . . . . . . . . . . . . . . 97
3.24 Fitness máximo (normalizado) no processo evolutivo das seqüências:
SMHY1C e SMRT1 (populacao2 ). . . . . . . . . . . . . . . . . . . . . 97
3.25 Fitness máximo (normalizado) no processo evolutivo das seqüências:
P02185 e P69905 (populacao1 ). . . . . . . . . . . . . . . . . . . . . . 98
3.26 Fitness máximo (normalizado) no processo evolutivo das seqüências:
P02185 e P69905 (populacao2 ). . . . . . . . . . . . . . . . . . . . . . 98
3.27 Fitness máximo (normalizado) no processo evolutivo das seqüências:
P02185 e P68871 (populacao1 ). . . . . . . . . . . . . . . . . . . . . . 99
3.28 Fitness máximo (normalizado) no processo evolutivo das seqüências:
P02185 e P68871 (populacao2 ). . . . . . . . . . . . . . . . . . . . . . 99
xi
Lista de Tabelas
1.1
Cada aminoácido é formado por 3 nucleotı́deos adjacentes (códon) [71].
5
1.2
Códon (3 bases) → Aminoácido (mRNA) [72, 73, 74]. . . . . . . . .
6
1.3
Códon → Aminoácido.
1.4
A matriz de substituição BLOSUM50. Os valores logarı́tmicos das
. . . . . . . . . . . . . . . . . . . . . . . . . 15
probabilidades foram escalados e arredondados para o inteiro mais
próximo por propósitos de eficiência computacional. Os valores na
diagonal principal são de pares de resı́duos idênticos [33]. . . . . . . . 20
2.1
Subconjunto da matriz de substituição BLOSUM50. . . . . . . . . . 54
2.2
Seqüências utilizadas nas simulações
. . . . . . . . . . . . . . . . . . 62
2.3
Seqüências utilizadas nas simulações
. . . . . . . . . . . . . . . . . . 76
3.1
Tempo médio de processamento (Figuras 3.1-3.4) por probabilidade
de mutação.
3.2
Tempo médio de processamento (Figuras 3.5-3.6) por probabilidade
de mutação.
3.3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Resultados obtidos pelo algoritmo clássico de Needleman e Wunsch,
e o algoritmo genético. O algoritmo clássico não realiza E/S
(entrada/saı́da) de dispositivo, enquanto que o AG serial RE faz
E/S. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
xii
LISTA DE TABELAS
3.4
Resultados obtidos pelo algoritmo clássico de Needleman e Wunsch,
e o algoritmo genético. O algoritmo clássico realiza E/S (entrada/saı́da) de dispositivo, enquanto que o AG serial RE faz E/S. 88
3.5
Resultados obtidos pelo algoritmo clássico de Needleman e Wunsch,
e o algoritmo genético proposto. O algoritmo clássico não realiza
E/S (entrada/saı́da) de dispositivo, enquanto que o AG serial RE
faz E/S. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.6
Resultados obtidos pelo algoritmo clássico de Needleman e Wunsch,
e o algoritmo genético. O algoritmo clássico realiza E/S (entrada/saı́da) de dispositivo, enquanto que o AG serial RE faz E/S. 95
xiii
Lista de Abreviaturas
AG
ASPARAGOS
Algoritmo Genético
Asynchronous Parallel Genetic Optimization Strategy
BLAST
Basic Local Alignment Search Tool
Blosum
Block Substution Matrix
DNA
ácido desoxirribonucleico - deoxyribonucleic acid
DSM
Distributed Shared Memory
FASTA
Linux
MOSIX
MPI
MSA-EA
MRTG
NRE
NCBI
NOWs
RE
RNA
(FAST-ALL) - Fast Alignment for All Sequences
Sistema Operacional Livre
Multicomputer Operating System for Unix
Messaging Passing Interface
Multiple Sequence Aligmnent - Evolutionary Algoritm
Multi Router Traffic Grapher
Não-reestruturada
National Center for Biotechnology Information
Rede de Estações - Network of Workstation
Reestruturada
ácido ribonucleico - ribonucleic acid
xiv
Lista de Abreviaturas
SAGA
Sequence Alignment by Genetic Algorithm
SMM
Shared Memory Multiprocessor
SMP
Processamento Simétrico - Symetric MultiProcessing
Windows
mRNA
Sistema Operacional Proprietário
RNA mensageiro
xv
Glossário
NRE
RE
cluster
códon
daemon
seqüência(s) NRE (algoritmo genético não-reestruturado): que
possue(m) gaps alinhados entre os resı́duos
seqüência(s) RE (algoritmo genético reestruturado): que possue(m) gaps alinhados apenas à direita dos resı́duos
conjunto de computadores interligados
trinca de nucleotı́deos
processo de computador que provê serviços sem interatividade
direta com o usuário
gaps
buracos/lacunas num alinhamento
shell
interpretador de comandos de um sistema operacional
xvi
Introdução
As informações que compõem todo ser vivo tais como caracterı́sticas fı́sicas,
comportamento e funções especı́ficas (expressões gênicas, supressões gênicas, crescimento, etc) são armazenadas em grandes macromoléculas chamadas de ácidos
nucléicos. Em todos os organismos vivos o material genético é organizado em estruturas chamadas cromossomos e a sua quantidade depende da espécie.
A informação genética em ácidos nucléicos é especificada pela seqüência de
quatro compostos contendo nitrogênio chamados bases. Dessa forma, a estrutura
genética de todos os organismos vivos é codificada usando-se um alfabeto de quatro
letras (nucleotı́deos): adenina (A), guanina (G), timina (T) e citosina (C).
O DNA 1 consiste de duas fitas complementares entrelaçadas entre si formando
uma dupla hélice [69]. Cada fita do DNA é então um polı́mero quase sempre não
ramificado de unidades de desoxirribonucleotı́deos os quais são compostos por: um
açúcar (a desoxirribose que no RNA
2
é substituı́da pela ribose), uma base nitroge-
nada e um ou até três grupos fosfato [69].
Quando faltam partes destas estruturas, as seqüências protéicas e enzimas
responsáveis pelo funcionamento do organismo são produzidas inadequadamente ou
não são produzidas. Neste caso, seria interessante produzir seqüências com a mesma
funcionalidade, então inserı́-las dentro do organismo para compensar esta carência.
Para encontrar, estudar e reproduzir as caracterı́sticas destes genes, é necessário
saber como eles interagem. Assim, a tarefa elementar da análise de seqüências é
saber se duas seqüências biológicas estão relacionadas, e uma das formas de se obter
1
2
DNA: ácido desoxirribonucleico - deoxyribonucleic acid: cadeia de ácidos nucléicos
RNA: ácido ribonucleico - ribonucleic acid: cadeia de ácidos nucléicos
xvii
Introdução
informações é fazendo o alinhamento destas seqüências de nucleotı́deos que compõem
os genes. Normalmente isto é resolvido alinhando as seqüências, ou partes delas, e
então decidindo se aquele alinhamento é o mais provável pelo fato das seqüências
estarem relacionadas, ou por casualidade. O algoritmo de programação dinâmica
que responde esta questão é conhecido na análise de seqüências biológicas como
algoritmo de Needleman-Wunsch [81]. Esse trabalho propõe um método alternativo
baseado na técnica do Algoritmo Genético (AG) [29], para achar o alinhamento
ótimo entre duas seqüências de nucleotı́deos.
AG são algoritmos de busca e de metodologia de otimização de soluções baseados no mecanismo de seleção e genética naturais. Eles combinam sobrevivência entre estruturas de seqüências “saudáveis” com uma estrutura de troca de informação
aleatória. Assim, os AG valem-se de informações históricas para investigar um novo
ponto de busca de uma soluçõa com um esperado resultado melhorado.
Ao longo de uma evolução genética, o indivı́duo apto tem maiores chances
de produzir descendência de boa qualidade. Numa aplicação prática de AG, uma
população de indivı́duos é estabelecida e estes podem ser iniciados com valores
aleatórios, onde estes valores representam quantitativamente o grau de determinadas caracterı́sticas. O tamanho desta população varia de um problema a outro. Em
cada ciclo de operação genética, designado como processo evolutivo, uma geração
subseqüente é criada a partir dos indivı́duos da população atual. Isto somente sucede
se um grupo destes indivı́duos, geralmente chamados de pais ou uma coleção designada de conjunto de emparceiramento, for selecionado por uma rotina de seleção
especı́fica. Os genes dos pais são misturados e recombinados para a produção de
descendentes na próxima geração. É esperado que deste processo de evolução, o melhor indivı́duo criará um número maior de descendentes e assim haverá uma maior
chance de sobreviver na geração subseqüente, simulando o mecanismo natural da
sobrevivência do mais forte, a seleção natural.
Para a aplicação do AG nesse trabalho, a seqüência alinhada (indivı́duo) é descrita por um cromossomo onde este é associado a uma função objetiva (função de
aptidão - fitness function) baseada na matriz de substituição BLOSUM50 [94]. Para
cada geração alguns pares de cromossomos são escolhidos aleatoriamente para cruzaxviii
Introdução
mento (crossover), ou seja, para recombinação de informações genéticas, considerando-se uma taxa de cruzamento. O próximo passo é a mutação destes descendentes
levando-se em conta uma taxa de mutação. O último passo é a seleção dos cromossomos com os mais altos valores de aptidão (fitness). Este ciclo é repetido até que o
número de gerações seja atingido ou um valor de aptidão seja ultrapassado. Considerando que o AG já possui uma arquitetura de paralelismo intrı́nseca, não requer
esforço algum para construir um sistema computational paralelo. Especificamente,
o AG pode ser explorado completamente em sua estrutura paralela para ganhar a
velocidade exigida para usos práticos [30].
A tentativa de aplicar o AG ao problema de multialinhamento surgiu em 1993
quando Ishikawa [98] publicou um AG hı́brido que não tentava otimizar diretamente
o alinhamento mas a ordem na qual as seqüências deveriam ser alinhadas usando
programação dinâmica.
O primeiro AG capaz de trabalhar com seqüências numa maneira mais geral
foi descrito uns poucos anos depois por Notredame e Higgins [99], imediatamente
antes de um trabalho similar por Zhang [101].
Durante os anos seguintes, foram introduzidas pelo menos três novas estratégias
de multialinhamento de seqüências baseado em algorı́timos evolutivos [102, 103, 104].
No presente momento existem muitos trabalhos de AG aplicado ao multialinhamento sendo desenvolvidos com o objetivo de otimizar a eficiência e a exatidão
dos algorı́timos [96, 105, 106].
No capı́tulo 1, são abordados os conceitos básicos: da biologia relacionados
com as estruturas genéticas; dos principais algoritmos de alinhamento de seqüências
de nucleotı́deos; de AG e seu funcionamento através de exemplos; e de AG Paralelo.
No capı́tulo 2, são mostrados os métodos e dados utilizados na implementação do AG
no alinhamento de seqüências de nucleotı́deos. O capı́tulo 3 refere-se aos resultados
obtidos da aplicação do AG paralelo no alinhamento de seqüencias de nucleotı́deos
em comparação com o AG serial. Finalmente o capı́tulo 4 encerra este trabalho com
a sı́ntese dos resultados obtidos e algumas sugestões de trabalhos futuros.
xix
Capı́tulo 1
Fundamentação
1.1
Fundamentos Biológicos
Neste capı́tulo é mostrado os conceitos biológicos necessários para entender a
complexidade dos processos evolutivos envolvendo informações genéticas. Também
é descrito a estrutura, a mutação e a herança do material genético.
1.1.1
DNA: O Material Genético
A estrutura genética de todos os organismos vivos é codificada usando-se um
alfabeto de quatro letras (nucleotı́deos) divididos em dois grupos:
• purinas: adenina (A) e guanina (G);
• pirimidinas: timina (T) e citosina (C).
Por convenção as purinas são abreviadas por R e as pirimidinas por Y.
O DNA consiste de duas fitas complementares entrelaçadas entre si formando
uma dupla hélice. Cada fita do DNA é então um polı́mero quase sempre não ramificado de unidades de desoxirribonucleotı́deos os quais são compostos por: um açúcar
(a desoxirribose que no RNA é substituı́da pela ribose), uma base nitrogenada e
1
Capı́tulo 1. Fundamentação
um ou até três grupos fosfato. Para simplificar o entendimento a Figura 1.1 mostra
apenas as bases aos pares, onde a fita azul representa os açúcares e os fosfatos. A
sempre se pareia com T (no RNA T é substituı́da por U), e G sempre se pareia
com C. Mesmo que existam apenas quatro letras no alfabeto genético, uma enorme
quantidade de informações pode ser armazenada devido o tamanho das moléculas
de ácido nucléico. Por exemplo, uma cópia completa do genoma humano (toda a
informação genética em um conjunto completo de cromossomos humanos) contém 3
bilhões (3 × 109 ) [69] de pares de bases de DNA. Como cada posição numa seqüência
pode assumir 1 dos 4 pares de bases, podemos ver que o número de seqüências
possı́veis, dado n como o tamanho da seqüência, é de 4n . Sendo o genoma humano
com n = 3 × 109 , sua capacidade de armazenamento de informações é enorme e
diretamente proporcional à variabilidade de caracterı́sticas da espécie humana.
Figura 1.1: Visão bidimensional da estrutura do DNA. A informação genética dos
seres vivos é armazenada nas grandes moléculas de DNA em seqüências
de pares de bases: A:T, T:A, G:C e C:G.
2
Capı́tulo 1. Fundamentação
1.1.2
Replicação do DNA: Transmissão da Informação Genética
A informação genética de um organismo é transmitida de célula a célula durante o desenvolvimento, e de geração a geração durante a reprodução pela replicação. Dois filamentos de DNA com pareamento apropriado de bases são complementares. Assim, em termos de transmissão da informação genética para moléculas
filhas de DNA, os dois filamentos de uma dupla hélice parental podem servir como
molde para a sı́ntese de um novo filamento complementar (veja Figura 1.2). Como
resultado, as duas moléculas filhas de DNA serão idênticas à molécula de DNA
parental. Assim, a estrutura do DNA é perfeita para seu papel de transmitir a
informação genética de célula a célula e de geração a geração.
Embora o uso dos filamentos parentais de DNA como moldes para a sı́ntese
de novos filamentos complementares seja um modo simples e elegante de duplicar
a informação genética, o mecanismo pelo qual o DNA se replica é bem complexo
e vai além do objetivo desse trabalho. É dada apenas a idéia básica de como este
mecanismo funciona.
Figura 1.2: Replicação do DNA. A separação e a sı́ntese ocorrem de modo gradativo.
3
Capı́tulo 1. Fundamentação
1.1.3
Expressão Gênica: Controle do Crescimento e Desenvolvimento
A informação genética controla a morfogênese do organismo, seja ela um vı́rus,
uma bactéria, uma planta ou um animal. Esta informação genética deve ser expressa
com precisão tanto espacialmente quanto temporalmente para produzir a forma tridimensional apropriada do organismo. Nos organismos multicelulares, a informação
genética deve controlar o crescimento e a diferenciação do organismo, desde o zigoto unicelular até o adulto. Para efetuar este processo complexo, cada gene de
um organismo deve ser expresso na época apropriada e nas células apropriadas
durante o desenvolvimento. As etapas iniciais nas vias de expressão gênica são chamadas de transcrição e tradução e estão ilustradas na Figura 1.3. A transcrição e
a tradução resultam na sı́ntese de proteı́nas, as macromoléculas que catalisam as
reações metabólicas essenciais à vida e contribuem para a maior parte da estrutura dos organismos vivos. As proteı́nas são moléculas grandes e complexas que
contêm de um a vários polipeptı́dios. Os polipeptı́dios, por sua vez, são cadeias longas de subunidades pequenas repetidas chamadas aminoácidos. Vinte aminoácidos
diferentes (conforme a Tabela 1.1) são incorporados em polipeptı́dios em resposta
à formação genética armazenada nas moléculas de DNA. Os polipeptı́dios em geral
têm centenas de aminoácidos de comprimento. Com os 20 aminoácidos diferentes, os
organismos vivos podem produzir um número imenso de proteı́nas diversas. Existem
20100 seqüências diferentes, por exemplo, de um polipeptı́dio com 100 aminoácidos
de comprimento. Esta variação enorme na estrutura das proteı́nas é, em grande
parte, responsável pela enorme variabilidade dos organismos vivos.
A primeira etapa na expressão gênica, a transcrição, envolve a conversão da
informação genética armazenada sob a forma de pares de bases na dupla hélice do
DNA em seqüências de bases de uma molécula unifilamentar de RNA mensageiro
(mRNA). Catalisado por enzimas chamadas RNA polimerases, este processo ocorre
quando um filamento do DNA atua como molde para a sı́ntese de um filamento
complementar de RNA. A transcrição usa as mesmas regras do pareamento de bases
que a replicação do DNA, exceto que a base uracila (U) é incorporada no RNA na
posição em que está presente a timina no DNA. Os pontos em que a transcrição
4
Capı́tulo 1. Fundamentação
Tabela 1.1: Cada aminoácido é formado por 3 nucleotı́deos adjacentes (códon) [71].
Aminoácido
Sı́mbolo
Aminoácido Sı́mbolo
ácido aspártico
D
isoleucina
I
ácido glutâmico
E
leucina
L
alanina
A
lisina
K
arginina
R
metionina
M
asparagina
N
prolina
P
cisteı́na
C
serina
S
fenilalanina
F
tirosina
Y
glutamina
Q
treonina
T
glicina
G
triptofano
W
histidina
H
valina
V
começa e termina são determinados por seqüências de bases que são reconhecidas
por alguns dos fatores protéicos que participam do processo de transcrição.
Durante a tradução, a seqüência de bases em uma molécula de mRNA é convertida na seqüência especificada de aminoácidos em um polipeptı́dio, de acordo
com as regras do código genético [69, 71]. Cada aminoácido é especificado por um
códon, uma trinca de bases adjacentes na molécula de mRNA, conforme a Tabela
1.2. A tradução é um processo complexo que ocorre em estruturas macromoleculares citoplasmáticas chamadas ribossomos, e requer a participação de muitas outras
macromoléculas.
As etapas subseqüentes na via pelas quais um gene exerce seu efeito na morfogênese de um organismo são geralmente complexas, especialmente em eucariontes
multicelulares. As vias de expressão genética freqüentemente envolvem interações
macromoleculares, interações célula-célula e comunicação intercelular por hormônios
e outras moléculas sinalizadoras, interações de tecidos e órgãos e restrições impostas
por fatores ambientais. Os estudos atuais do controle genético do crescimento e de
desenvolvimento das plantas e animais estão produzindo novos e excitantes resultados. Muitos genes que controlam o crescimento e desenvolvimento das plantas
e animais foram recentemente identificados e caracterizados, e as vias detalhadas
5
Capı́tulo 1. Fundamentação
U
C
A
G
UU
Fenilalanina
Fenilalanina
Leucina
Leucina
UC
Serina
Serina
Serina
Serina
UA
Tirosina
Tirosina
Ocre
UG
Cisteı́na
Cisteı́na
Opala
CU
Leucina
Leucina
Leucina
Leucina
CC
Prolina
Prolina
Prolina
Prolina
CA
Histidina
Histidina
Glutamina
Glutamina
CG
Arginina
Arginina
Arginina
Arginina
AU
Isoleucina
Isoleucina
Isoleucina
AC
Treonina
Treonina
Treonina
Treonina
AA
Asparagina
Asparagina
Lisina
Lisina
AG
Serina
Serina
Arginina
Arginina
GU
Valina
Valina
Valina
Valina
GC
Alanina
Alanina
Alanina
Alanina
GA
Ácido Aspartico
Ácido Aspartico
Ácido Glutâmico
Ácido Glutâmico
GG
Glicina
Glicina
Glicina
Glicina
Âmbar
Triptofano
Metionina
Tabela 1.2: Códon (3 bases) → Aminoácido (mRNA) [72, 73, 74].
— Códon de inı́cio da cadeia polipeptı́dica (iniciador)
—
Códon de término da cadeia polipeptı́dica (finalizador)
6
Capı́tulo 1. Fundamentação
Figura 1.3: Exemplo da transcrição e tradução usando a sı́ntese da globina β humana. Durante a
transcrição (etapa 1), o filamento de DNA é um molde para a sı́ntese de um filamento
de RNA complementar. O mRNA resultante (RNA mensageiro) é transportado
para o citoplasma. No citoplasma, a seqüência de bases do mRNA é “traduzido” na
seqüência de aminoácidos formando assim o polipeptı́dio do gene de acordo com as
regras do código genético. A tradução (etapa 2) ocorre em estruturas complexas
chamadas ribossomos. A sı́ntese de globina β final requer a remoção pós-traducional
da metionina terminal (etapa 3) [69].
da morfogênese estão sendo descobertas em vários organismos modelo, tais como o
verme Caenorhabditis elegans, a mosca das frutas Drosophila melanogaster, a planta
Arabidopsis thaliana, e até o camundongo (veja as referências [75, 76, 77]).
7
Capı́tulo 1. Fundamentação
1.1.4
Mutação:
Mudanças no Material Genético com o
Tempo
Embora a informação genética deva ser transmitida de geração a geração com
considerável precisão, esta informação não permanece estática. Ocasionalmente a
informação genética sofre mudanças, ou mutações, para produzir nova variabilidade
genética que fornece a matéria-prima para a evolução. Os novos genes variantes produzidos por mutação, chamados genes mutantes, em geral resultam em organismos
com caracterı́sticas anormais.
As mutações que atingem um único sı́tio, ou mutações de ponto, em genes
individuais podem ser substituições de pares de bases ou a inserção ou remoção
de um ou alguns pares de bases contı́guos. A inserção ou remoção de um ou dois
pares de bases dentro de seqüências codificantes de um gene irá alterar o códon da
matriz de leitura (a série de trincas de bases que especifica os aminoácidos durante
a tradução) no mRNA. Assim, tais mutações são chamadas de matriz de leitura.
As mutações de matriz em geral resultam em produtos gênicos não-funcionais. Por
outro lado, as substituições de pares de bases em geral resultam na substituição de
um só aminoácido por outro aminoácido, pois cada substituição de par de bases
muda apenas um códon.
A relação entre substituições de pares de bases e de aminoácidos pode ser
melhor ilustrada com um exemplo. A anemia falciforme ocorre em humanos que
levam duas cópias do gene de uma globina β que diferem do gene normal da globina
β adulta por uma única substituição de par de bases. A substituição no gene de Hbsβ
altera o sexto aminoácido do polipeptı́dio da hemoglobina β de ácido glutâmico, nas
pessoas normais, para valina nas pessoas com anemia falciforme [78] (veja Figura
1.4). A única alteração de aminoácido na cadeia de globina β resulta nas hemácias
em forma de foice e em anemia falciforme nas pessoas com duas cópias do gene Hbsβ .
Esta alteração das hemácias não só resulta em reduzida capacidade de transporte
de oxigênio no sangue, caracterı́stica da anemia falciforme, mas também causa um
grande número de efeitos secundários, tais como prejuı́zo de crescimento, fadiga
geral, baço aumentado, dor recorrente e aumento da suscetibilidade aos micróbios e
8
Capı́tulo 1. Fundamentação
infecções virais. Assim, uma única substituição de par de bases pode ter um grande
efeito no fenótipo do organismo portador da mutação [69].
9
Capı́tulo 1. Fundamentação
Figura 1.4: Mutação: alteração em bases da seqüência de DNA [69].
10
Capı́tulo 1. Fundamentação
1.1.5
Resumo:
Pontos Importantes
A informação genética dos organismos vivos é armazenada na seqüência de
quatro bases no DNA ou, em alguns vı́rus, no RNA. O DNA é uma molécula bifilamentar. Durante a replicação do DNA, os dois filamentos separam, e cada filamento serve como um molde para a sı́ntese de um novo filamento complementar,
produzindo duas moléculas filhas idênticas de DNA. A informação genética de um
organismo controla seu crescimento e desenvolvimento por meio de vias complexas de expressão gênica. Mudanças ocasionais no material genético fornecem nova
variabilidade genética que é essencial para o processo de evolução.
11
Capı́tulo 1. Fundamentação
1.2
Alinhamento de Seqüências Par-a-Par
O princı́pio básico do alinhamento de seqüências (completo ou parcial) de gene
ou proteı́nas é saber a relação que elas possuem com outros genes ou proteı́nas. A
relação entre duas proteı́nas, considerando-se suas seqüências, sugere que elas são
homólogas 1 . Através do alinhamento de seqüências é possı́vel identificar domı́nios
ou sentidos para DNAs ou seqüências de proteı́nas que são compartilhados entre um
grupo de moléculas. Além disso, a relação das proteı́nas com organismos e entre
organismos ajuda-nos a entender melhor o sentido biológico da vida.
Para o desenvolvimento de algoritmos de alinhamento trataremos de quatro
assuntos fundamentais que são:
• Os tipos de alinhamento a serem considerados;
• O sistema de pontuação (scoring system) para classificar alinhamentos;
• O algoritmo usado para achar o alinhamento ótimo;
• Os métodos estatı́sticos usados para avaliavar a significância de uma pontuação
do alinhamento.
Também é dada uma breve justificativa para o alinhamento de proteı́nas ao
invés de nucleotı́deos na seção 1.2.1.
A Figura 1.5 mostra 3 exemplos de alinhamentos par-a-par de uma região da
seqüência protéica da globina α humana [33]. A linha central em cada alinhamento
indica posições idênticas com letras (do alfabeto de aminoácidos) e posições “similares” com um sinal de + (mais). Os pares “similares” de resı́duos (nucleotı́deos
ou aminoácidos) possuem uma pontuação positiva na matriz de substituição usada
na pontuação do alinhamento, a qual será explicada em seguida. No primeiro alinhamento (Figura 1.5°
a ) existem muitas posições onde os pares de resı́duos são
idênticos; há outras posições que são funcionalmente conservativas, tal como o par
D-E quase no final do alinhamento, representando um alinhamento de um resı́duo
1
Dois genes são homólogos se eles possuem relação com um ancestral comum [34].
12
Capı́tulo 1. Fundamentação
Figura 1.5: Três alinhamentos de seqüências para um fragmento da globina α
humana. °
a Similaridade evidente para a globina β humana. °
b
Um
alinhamento de forma estrutural razoável para a leghaemoglobina do lupos amarelo. °
c Um alinhamento espúrio com alta pontuação para uma
glutationa homólogo do nematóide S-transferase chamada F 11G11.2
[33].
de ácido aspártico com um resı́duo de ácido glutâmico, ambos negativamente carregados. A Figura 1.5°
b mostra um alinhamento biologicamente importante, essas
seqüências estão relacionadas evolutivamente, tendo a mesma forma tridimensional
e funcionam em ligações de oxigênio. Entretanto, neste caso há muito menos identidades 2 e gaps 3 (buracos ou lacunas) foram inseridos na seqüência da globina α para
manter regiões ao longo do alinhamento onde a leghaemoglobina possui resı́duos extras. A Figura 1.5°
c mostra um alinhamento com um número similar de identidades
ou mudanças conservativas. Porém, neste caso, estamos olhando um alinhamento
2
3
Identidade: até que ponto 2 seqüências (nucleotı́deos ou aminoácidos) são invariantes [34].
O termo gaps será melhor explicado na seção 1.2.2.
13
Capı́tulo 1. Fundamentação
espúrio de uma proteı́na que possui estrutura e função completamente diferentes.
Um dos desafios dos métodos de alinhamento par-a-par é de distingüir casos
como da Figura 1.5°
b e°
c.
14
Capı́tulo 1. Fundamentação
1.2.1
Justificativa para o Alinhamento Protéico
Usualmente consegue-se mais informações comparando seqüencias de proteı́nas
do que alinhando seqüências de DNAs. Há várias razões para isto. Muitas alterações
na seqüência de DNA (especialmente na terceira posição de um códon) não alteram
o aminoácido especificado (veja exemplo da Tabela 1.3). Além do mais, muitos
aminoácidos possuem propriedades biofı́sicas semelhantes (exemplo: lisina e arginina são ambos básicos). As relações importantes entre aminoácidos relacionados
(exceto sem pareamento) podem ser entendidas utilizando o sistema de pontuação
comentado na seção anterior o qual será descrito mais adiante. Nessa perspectiva
as seqüências de DNA são menos informativas [34].
Códon
Aminoácido
UCx
Serina
CUx
Leucina
CCx
Prolina
CGx
Arginina
ACx
Treonina
GUx
Valina
GCx
Alanina
GGx
Glicina
Tabela 1.3: Códon → Aminoácido.
15
Capı́tulo 1. Fundamentação
1.2.2
Gaps
O alinhamento par-a-par é útil como um caminho para identificar mutações
que ocorreram durante a evolução e assim causaram divergências de seqüências de
duas proteı́nas analisadas. As mutações mais comuns são: substituições, inserções
e remoções. Substituições ocorrem quando uma mutação resulta na alteração do
códon de um aminoácido trocando-o por outro (como mostra a Figura 1.4). Este
resulta no alinhamento de dois aminoácidos diferentes, como serina e treonina (veja
também a seção 1.1.4 sobre mutação e a Tabela 1.3). Inserções e remoções ocorrem
quando resı́duos são respectivamente adicionados ou removidos, sendo representados
por caracteres nulos (o sı́mbolo ponto ou traço: . ou -) os quais são adicionados
numa ou noutra sequência. Inserções e remoções (mesmo sendo contı́nuas e longas)
são referenciadas como gaps no alinhamento.
No alinhamento ilustrado na Figura 1.6 existem 8 gaps (desconsiderando as
extremidades). Destes, 2 ocorrem no fim das proteı́nas, 2 gaps longos estão no meio
do alinhamento, e há 4 gaps de 1 ou 2 aminoácidos. Observe também que uma das
conseqüências dos gaps é complementar cada seqüência do alinhamento deixando-as
exatamente com o mesmo tamanho.
A adição de gaps num alinhamento pode ser biologicamente relevante, porque
os gaps refletem alterações evolucionárias que ocorreram. Assim, os gaps permitem
o alinhamento completo de duas proteı́nas [34].
Figura 1.6: Alinhamento par-a-par das proteı́nas RBP (Retinol-Binding Protein)
humana e β-lactoglobulina bovina [34].
16
Capı́tulo 1. Fundamentação
1.2.3
Modelo de Pontuação: Matriz de Pontuação
A pontuação total que determina um alinhamento será a soma dos termos de
cada par alinhado dos resı́duos, mais os termos de cada gap. Esta interpretação
corresponderá ao algoritmo probabilı́stico que determina o quanto as seqüências
estão relacionadas, considerando inicialmente que elas não têm relação alguma. Informalmente, identidades e substituições conservativas são mais prováveis em alinhamentos, e assim os termos contribuem com pontuação positiva; já as mudanças
não-conservativas são menos freqüentes em alinhamentos reais, e assim os termos
contribuem com pontuação negativa [33, 27, 34, 67, 66, 68].
Usando a concepção de um esquema de pontuação aditiva onde podemos considerar mutações em locais diferentes numa seqüência por terem ocorridos independentemente (tratando um gap de qualquer tamanho como uma única mutação).
Todos os algoritmos descritos neste capı́tulo para encontrar alinhamentos ótimos
dependem do esquema de pontuação. A suposição de independência parece ser uma
aproximação razoável para o DNA e seqüencias protéicas, embora sabe-se que interações entre resı́duos possuem um papel muito crı́tico determinando a estrutura
da proteı́na.
Para obtermos a matriz precisamos da pontuação de cada par de resı́duos alinhados. Um biólogo com uma boa intuição sobre proteı́nas consegue criar um conjunto de 210 termos valorados de pontuação para todos possı́veis pares de aminoácidos 4 , mas é extremamente útil estar fundamentado numa teoria para a pontuação.
Derivaremos as pontuações da substituição a partir de um modelo probabilı́stico.
Primeiro, estabeleceremos algumas notações. Consideraremos um par de seqüências x e y, de tamanhos n e m, respectivamente. Tomemos xi como sendo o
0
0
i−esimo sı́mbolo de x e yj como sendo o j −esimo sı́mbolo de y. Estes sı́mbolos vêm
do alfabeto Λ; neste caso do DNA serão 4 bases, logo Λ = {A, G, C, T }, e no caso
de proteı́nas os vinte aminoácidos. Denotaremos sı́mbolos deste alfabeto por letras
minúsculas como a, b. Por enquanto, somente consideraremos alinhamentos globais
par-a-par sem gaps, isto é, 2 alinhamentos com tamanhos de seqüências iguais como
4
20 aminoácidos (conforme a Tabela 1.1) mais o gap dão C221 =
21!
2!(21−2)!
= 210 pares possı́veis.
17
Capı́tulo 1. Fundamentação
na Figura 1.5°
a.
Dado um par de seqüências alinhadas, deseja-se determinar uma pontuação
para o alinhamento o qual será uma medida probabilı́stica do quanto as seqüências
estão relacionadas. Isto é feito através de modelos que determinam uma probabilidade ao alinhamento em cada um dos dois casos; então consideramos a taxa (ou
razão) das duas probabilidades [33].
O modelo não-relacionado ou aleatório R é simplista [33]. Ele assume que a
letra a ocorre independentemente com alguma freqüência qa , e portanto a probabilidade das duas seqüências é justamente o produto das probabilidades de cada
aminoácido:
P (x, y|R) =
Y
qxi
i
Y
qyj .
(1.1)
j
No modelo pareado alternativo M [33], pares alinhados de resı́duos ocorrem
com uma probabilidade comum pab . Este valor pab pode ser entendido como a
probabilidade que cada um dos resı́duos a e b têm sido independentemente derivados
de algum resı́duo original desconhecido c em seu ancestral comum (c talvez seja igual
a a e/ou b). Isto fornece a probabilidade para o alinhamento completo expresso por:
P (x, y|M ) =
Y
pxi yi .
i
A taxa destas duas probabilidades é conhecida como a taxa probabilı́stica:
Q
Y pxi yy
px y
P (x, y|M )
= Q i Qi i =
.
P (x, y|R)
qxi qyi
i qxi
i qy i
i
Para chegar a um sistema de pontuação aditivo, nós tomamos o logaritmo
desta taxa, conhecido como a taxa probabilı́stica logaritmica:
S=
X
s(xi , yi ),
(1.2)
i
onde
18
Capı́tulo 1. Fundamentação
s(a, b) = log(
pab
)
qa qb
(1.3)
é a taxa de probabilidade logarı́tmica dos pares de resı́duo (a, b) ocorrendo como um
par alinhado, ao invés de um par não-alinhado.
Como procurávamos, a Equação 1.2 é uma soma das pontuações individuais
s(a, b) de cada par alinhado de resı́duos. As pontuações s(a, b) podem ser organizadas numa matriz. Para proteı́nas, por exemplo, elas formam uma matriz 20 × 20,
0
0
com s(ai , aj ) em posições i, j na matriz, onde ai , aj são os i − esimo e j − esimo
aminoácidos (em qualquer numeração). Isto é conhecido como: matriz de pontuação
ou matriz de substituição. Um exemplo de uma matriz de substituição derivada é a
matriz BLOSUM50, mostrada na Tabela 1.4. Podemos utilizar estes valores para
pontuar o alinhamento da Figura 1.5°
a e obter a pontuação 130. Outro conjunto
de matrizes de substituição muito utilizadas são as matrizes PAM (accepted point
mutation [34]).
Resumindo, BLOSUM (Blocks Substitution Matrix) refere-se a blocos de matrizes de substituição. É uma matriz de substituição na qual a pontuação de cada
posição é derivada de observações das freqüências de substituições em blocos de
alinhamentos locais em proteı́nas relacionadas. Cada matriz é moldada para uma
particular distância evolucionária. Na matriz BLOSUM62, por exemplo, o alinhamento do qual foram derivadas as pontuações foi criado usando seqüências que compartilham não mais que 62% de identidade. Seqüências mais idênticas que 62% são
representadas por uma única seqüência no alinhamento para evitar uma pesagem
excessiva na relação entre os membros familiares muito próximos [34].
Um resultado importante é que mesmo que um biologista intuitivo formule uma
matriz de substituição especı́fica, esta matriz implica em “freqüências alvo” pab as
quais estarão de acordo com a teoria mostrada anteriormente [94]. Assim, qualquer
matriz de substituição faz uma descrição sobre a probabilidade de observação dos
pares ab num alinhamento real [31]. Muitas matrizes de substituição podem ser
encontradas na referência [93].
19
Capı́tulo 1. Fundamentação
Tabela 1.4: A matriz de substituição BLOSUM50. Os valores logarı́tmicos das probabilidades foram escalados e arredondados para o inteiro mais próximo
por propósitos de eficiência computacional. Os valores na diagonal principal são de pares de resı́duos idênticos [33].
A R N D C Q E G H I L K M F
P
S T W Y V
A
5 -2 -1 -2
-1 -1 -1
-1
1
R
-2
-4
1
0 -3
0 -4 -3
3 -2 -3
-3 -1 -1
-3 -1 -3
N
-1 -1
7
2
-2
0
0
1 -3 -4
0 -2 -4
-2
1
0
-4 -2 -3
D
-2 -2
2
8
-4
0
2 -1
-1 -4 -4 -1 -4 -5
-1
0 -1
-5 -3 -4
C
-1 -4 -2 -4 13 -3 -3 -3
-3 -2 -2 -3 -2 -2
-4 -1 -1
-5 -3 -1
Q
-1
1
0
0
-3
7
2 -2
1 -3 -2
2
-1
0 -1
-1 -1 -3
E
-1
0
0
2
-3
2
6 -3
0 -4 -3
1 -2 -3
-1 -1 -1
-3 -2 -3
-2
-3 -3 -4
G
7 -1 -2
0 -3
0
0 -1
-3 -2 -3
1 -1
-3
0
8
-2 -1 -2 -1 -1 -3
0 -4
-2 -4 -4 -2 -3 -4
0
I
-1 -4 -3 -4
-2 -3 -4 -4
-4
5
2 -3
2
L
-2 -3 -4 -4
-2 -2 -3 -4
-3
2
5 -3
3
K
-1
0 -1
-3
2
M
-1 -2 -2 -4
-2
0 -2 -3
-1
2
3 -2
7
0
-3 -2 -1
-1
F
-3 -3 -4 -5
-2 -4 -3 -4
-1
0
1 -4
0
8
-4 -3 -2
1
P
-1 -3 -2 -1
-4 -1 -1 -2
-2 -3 -4 -1 -3 -4 10 -1 -1
-4 -3 -3
-1
-1 -3 -3
1 -1
1
0
T
0 -1
0 -1
1 -2
0 -1
0
0 -3 -3
0 -1 -1
0 -2
-3 -2
-2
S
0 -2 10 -4 -3
0
H
3
1
0
-2 -1 -2
-3
0
-3 -3 -1
-3 -1
4
1
-4 -3 -1
-2 -1
1
-1
-3 -2 -3
6 -2 -4
0 -1
2 -4
0
1
4 -1
0 -2 -3
-1
5
2
-4 -2 -2
-1 -1 -1 -2
-2 -1 -1 -1 -1 -2
-1
2
5
-3 -2
W -3 -3 -4 -5
-5 -1 -3 -3
-3 -3 -2 -3 -1
1
-4 -4 -3 15
2 -3
Y
-2 -1 -2 -3
-3 -1 -2 -3
4
-3 -2 -2
8 -1
V
0 -3 -3 -4
-1 -3 -3 -4
2 -1 -1 -2
-4 -4
1 -3
0
1 -1
-3 -2
0
2
-3 -1
0
5
20
Capı́tulo 1. Fundamentação
Penalidades para Gaps
O padrão de custo associado a um gap de tamanho λ é dado por uma pontuação
linear[33, 66, 68]:
φ(λ) = −λγ
(1.4)
φ(λ) = −γ − (λ − 1)δ
(1.5)
ou por uma pontuação discreta
onde γ é chamado de penalidade de gap aberto (gap-open) e δ é chamado de penalidade de extensão do gap (gap-extension). Usualmente os valores para a penalidade
δ são menores do que os valores para a penalidade γ, permitindo longas inserções e
remoções serem penalizadas menos do que deveriam se utilizássemos o custo de gap
linear. Isto é desejável quando gaps de poucos resı́duos são esperados quase tanto
como gaps de um único resı́duo [33].
As penalidades para gaps também correspondem a um modelo probabilı́stico
de alinhamento, embora isto seja menos identificado do que uma base probabilı́stica
para matrizes de substituição. Assumimos que a probabilidade de um gap ocorrer
num lugar em particular em uma dada seqüência é o produto da função f (λ) do
tamanho do gap, e a probabilidade combinada do conjunto de resı́duos inseridos
[33], logo:
P (gap) = f (λ)
Y
qxi .
(1.6)
i → posição no gap
A forma da Equação 1.6 como um produto de f (λ) com o termo qxi corresponde a
uma concepção de que o tamanho de um gap não está correlacionado com os resı́duos
que o mesmo contém [33].
Aqui, os valores naturais das probabilidades qa são as mesmas utilizadas no
modelo aleatório, porque ambos correspondem aos resı́duos independentemente nãopareados. Neste caso, quando dividimos a probabilidade desta região de acordo com
21
Capı́tulo 1. Fundamentação
o modelo aleatório para formar as taxas probabilı́sticas, os termos qxi são cancelados, assim deixamos somente o termo que depende do tamanho φ(λ) = log(f (λ));
penalidades de gap correspondem ao logaritmo da probabilidade de um gap daquele
tamanho [33].
Por outro lado, se há evidências de uma distribuição diferente de resı́duos em
regiões de gaps então deve haver pontuações de resı́duos especı́ficos para resı́duos
não-alinhados nestas regiões, isto é, os logarı́tmos de suas taxas de freqüência em
regiões de gaps contra os das regiões alinhadas. Isso pode acontecer, por exemplo,
se aminoácidos polares são mais prováveis de ocorrerem em gaps de alinhamentos
protéicos do que indicado por suas freqüências médias, porque os gaps são mais
prováveis de estar em laços (loops) na superfı́cie da estrutura protéica do que no seu
interior [33].
22
Capı́tulo 1. Fundamentação
1.2.4
Algoritmos de alinhamentos
Depois de definido o sistema de pontuação, faz-se necessário um algoritmo
para encontrar o alinhamento ótimo entre duas seqüências. Onde ambas seqüências
possuem o mesmo tamanho n, existe somente um possı́vel alinhamento global das
seqüências completas, mas o assunto se torna mais complicado uma vez que são
permitidos gaps (ou uma vez que iniciamos a observação de alinhamentos locais
entre subseqüências das duas seqüências). Existem
2n
Cn =
Ã
2n
n
!
=
(2n)!
22n
√
'
(n!)2
πn
(1.7)
possı́veis alinhamentos globais entre duas seqüências de tamanho n [33]. Computacionalmente é inviável enumerar todos estes alinhamentos, mesmo para pequenos
valores de n.
Dado um sistema de pontuação aditiva, o algoritmo para encontrar os alinhamentos ótimos da maneira que descrevemos utiliza-se da técnica de programação
dinâmica. Algoritmos de programação dinâmica são o centro da análise computacional de seqüências [33]. Todos os algoritmos descritos neste capı́tulo utilizam as
técnicas da programação dinâmica. Os algoritmos de programação dinâmica garantem encontrar o alinhamento ou conjunto de alinhamentos com a pontuação ótima
[33]. Em muitos casos os métodos heurı́sticos têm sido desenvolvidos para executar
os mesmos tipos de busca. Estes podem ser muito rápidos, mas eles fazem suposições
adicionais e perderão o melhor casamento de alguns pares de seqüências. Também
veremos um pouco sobre os métodos heurı́sticos mais adiante nesse capı́tulo.
O esquema de pontuação como taxa logaritmica da probabilidade foi adotado porque melhores alinhamentos terão pontuação maiores, assim maximizamos a
pontuação para encontrar o alinhamento ótimo. Às vezes as pontuações são determinados por outros meios e interpretadas como custos ou distâncias editadas, onde
queremos minimizar o custo do alinhamento. Ambas aproximações foram usadas
na literatura de comparação de seqüências biológicas. Algoritmos de programação
dinâmica aplicam-se tanto a um como ao outro; as diferenças são trocas triviais de
23
Capı́tulo 1. Fundamentação
mı́nimo para máximo.
Serão mostrados com maiores detalhes dois tipos básicos de alinhamentos. O
tipo de alinhamento que precisamos dependerá da origem das seqüências as quais
queremos alinhar. Para cada tipo de alinhamento há um algoritmo de programação
dinâmica um pouco diferente. Nessa seção, descreve-se somente o alinhamento para-par para pontuações de gaps lineares, com custo γ por resı́duo de gap. Modelos
de gaps mais complexos podem ser facilmente estendidos dos algoritmos descritos
nessa seção.
Para exemplificar os vários métodos de alinhamento, considere duas pequenas seqüências de aminoácido, x = HEAGAW GHEE e y = P AW HEAE. Para
pontuar o alinhamento, utilizaremos a matriz de pontuação BLOSUM50 (descrita na
seção 1.2.3), e um custo de gap por resı́duo não-alinhado de γ
= −8.
A Figura 1.7 mostra uma matriz pij de pontuação local p(xi , yj ) usada para alinhar cada par de resı́duo das duas seqüências exemplo. Pares de resı́duos idênticos
ou conservados estão destacados em negrito. Conseqüentemente, a meta de um
algoritmo de alinhamento é incorporar o máximo destes pares positivamente pontuados quanto possı́vel dentro do alinhamento, enquanto minimiza o custo de pares
de resı́duos não conservados, gaps, e outras restrições.
H
E
A
P
-2 -1 -1
A
-2 -1
W
-3 -3 -3
H
10
E
0
A
E
0 -2
A
W
G
H
E
E
-2 -1
-4
-2
-2
-1
-1
-3
0
-2
-1
-1
15 -3
-3
-3
-3
0
5
-3 -3
-2
-2
-3 -2
10
0
0
6 -1 -3
-1
-3 -3
0
6
6
0
5
-3
0
-2
-1
-1
6 -1 -3
-1
-3 -3
0
6
6
-2 -1
0
5
G
5
Figura 1.7: Duas seqüências usadas para ilustrar os algoritmos de programação
dinâmica. Elas estão arranjadas por par de resı́duos alinhados de forma
a mostrar os valores correspondentes da matriz BLOSUM50. As pontuações positivas estão em negrito.
24
Capı́tulo 1. Fundamentação
Alinhamento Global:
Algoritmo de Needleman e Wunsch
Considere primeiramente o alinhamento global ótimo entre duas seqüências
permitindo gaps. O algoritmo de programação dinâmica para resolver este problema
é conhecido na análise de seqüência biológica como o algoritmo de Needleman e
Wunsch [81], porém a versão mais eficiente descrita a seguir é a apresentada por
Gotoh [91].
A idéia é construir um alinhamento ótimo usando soluções anteriores do alinhamento ótimo ou subseqüências menores. Construı́mos uma matriz F com um
ı́ndice para cada seqüência, i e j, onde o valor F (i, j) é a pontuação do melhor
alinhamento entre o segmento inicial x1...i de x1 até xi e o segmento inicial y1...j
de y1 até yj . Podemos construir F (i, j) recursivamente. Nós começamos iniciando
F (0, 0) = 0, depois preenchemos a matriz vindo do canto superior esquerdo da matriz até o canto inferior direito. Se F (i − 1, j − 1), F (i − 1, j) e F (i, j − 1) são
conhecidos, é possı́vel calcular F (i, j). Existem três possı́veis caminhos de se obter
a melhor pontuação para F (i, j) de um alinhamento até xi , yj : xi pode ser alinhado
a yj , neste caso F (i, j) = F (i − 1, j − 1) + s(xi , yj ); ou xi é alinhado com um
gap, neste caso F (i, j) = F (i − 1, j) − γ; ou yj é alinhado com um gap, neste caso
F (i, j) = F (i, j − 1) − γ (veja a Figura 1.8). A melhor pontuação até (i, j) será o
maior valor destas três opções. Então, teremos



 F (i − 1, j − 1) + s(xi , yi ),
F (i, j) = max F (i − 1, j) − γ,


 F (i, j − 1) − γ.
(1.8)
Esta equação é aplicada repetidamente para preencher valores na matriz F (i, j),
calculando os valores do canto inferior direito de cada quadrado de quatro células obtidos de um dos três valores (superior esquerdo, esquerdo ou acima) como mostrado
na Figura 1.9.
25
Capı́tulo 1. Fundamentação
I
G
A
xi
A
I
G
L
G
V
yj
G
V
yj
A
xi
G A
xi
S
G
L
V
yj
Figura 1.8: Três caminhos possı́veis para o alinhamento até (i, j): xi alinhado com
yj , xi alinhado com um gap e yj alinhado com um gap.
...
...
...
··
·
..
.
..
.
F (i − 1, j − 1)
F (i, j − 1)
+s(xi , yi )
−γ
F (i − 1, j)
−γ
..
.
Z
Z
~ ?
Z
- F (i, j)
..
.
··
·
...
...
...
Figura 1.9: F (i, j) obtido a partir dos três valores possı́veis.
Conforme preenchemos os valores na F (i, j), também deixamos um ponteiro
em cada célula apontando para a célula de onde F (i, j) foi derivado, como mostrado
no exemplo completo da matriz da programação dinâmica na Figura 1.10.
Para que possamos completar nossa especificação do algoritmo, algumas condições
de limite devem ser consideradas. Na primeira linha da matriz, onde j = 0, os valores F (i, j −1) e F (i−1, j −1) não são definidos, assim os valores F (i, 0) precisam ser
especialmente tratados. Os valores F (i, 0) representam alinhamentos de um prefixo
de x para todos os gaps em y, assim nós podemos definir F (i, 0) = −i γ. Da mesma
forma, na primeira coluna da matriz, definimos F (0, j) = −j γ.
O valor na célula final da matriz, F (i = n, j = m), é por definição a melhor
pontuação de um alinhamento de x1...n para com y1..m , o qual é o que nós queremos: o valor da melhor pontuação do melhor alinhamento global de x para com y.
Para encontrar o próprio alinhamento, precisamos encontrar o caminho das escolhas
(Equação 1.8) que conduziu-nos a este valor final. O procedimento que faz isto é
conhecido como um traceback (traço de volta). Ele trabalha construindo o alinhamento invertido, iniciando da célula final e seguindo o ponteiro que armazenamos
quando construı́mos a matriz. Em cada passo no processo de traceback, voltamos
26
Capı́tulo 1. Fundamentação
da célula corrente (i, j) para uma das células (i − 1, j − 1), (i − 1, j) ou (i, j − 1) da
qual o valor F (i, j) foi derivado. Ao mesmo tempo, adicionamos um par de sı́mbolos
na frente do alinhamento corrente:



 (xi , yj ), se o passo foi para (i − 1, j − 1)
,
(χi , ψj ) =
(xi , ‘ ), se o passo foi para (i − 1, j)

 ,

(‘ , yj ), se o passo foi para (i, j − 1)
No fim alcançaremos o inı́cio da matriz, F (i = 0, j = 0). Note que χi e ψj são as
seqüências alinhadas de trás para frente, isto é, χn..1 e ψm..j é o alinhamento que
procuramos (Figura 1.11). Observe também que o processo do traceback descrito
aqui encontrou justamente o alinhamento com pontuação ótima, mas se houvessem
dois valores ótimos iguais seria feita uma escolha arbitrária entre as duas opções.
O algoritmo de traceback pode ser facilmente modificado de forma a obter
mais de um alinhamento ótimo, caso exista.
0
P
A
W
H
E
A
E
-8
↑
-16
↑
-24
↑
-32
↑
-40
↑
-48
↑
-56
H
⇐= -8 ⇐=
-2
↑ -10
↑
-18
-14
↑ -22
↑
-30
↑
-38
E
-16 ←
-9
-3
↑ -11
-18
A
G
-24 ← -32 ←
-17 ⇐= -25
-4 ← -12
-6
-7
-13
-8
↑ -8
-16
-16
↑ -16
-3
-11
↑
↑ -24
-11
-6
A
W
G
H
E
E
-40 ← -48 ← -56 ← -64 ← -72 ← -80
-33 ← -42 ← -49 ← -57
-65
-73
-20 ← -28 ←
-15
-5 ⇐=
↑ -9
-13
-9
-12
-11
-12
-12
-14
-36 ← -44 ← -52 ← -60
-13 ← -21 ←
-7
-3 ←
↑ -15
-7
↑
-12
-15
-15
-12
-29 ← -37
-11 ←
3
⇑ -5
-9
-19
-5
2
1
Figura 1.10: Matriz da programação dinâmica global. As setas mais largas, apontando para valores (em negrito) do alinhamento ótimo, representam os
ponteiros do traceback. O valor no canto inferior direito da matriz é a
pontuação total do alinhamento ótimo.
Resumidamente, o algoritmo trabalha somando a pontuação das partes inde27
Capı́tulo 1. Fundamentação
pendentes, assim a melhor pontuação até um ponto z no alinhamento será a melhor
pontuação até um passo antes deste ponto z, mais o incremento da pontuação do
novo passo. Além disso, a ordem de complexidade do algoritmo é de O(nm), tanto
para o tempo computacional quanto para o requisito de armazenagem de dados.
Considerado um algoritmo um pouco lento (quando n ≈ m, O(n2 )), é utilizado
para seqüências não muito longas [33]. Uma versão paralelizada deste algoritmo é
descrita na referência [35].
H
–
E
–
A
P
G
–
A
A
W
W
G
–
H
H
E
E
–
A
E
E
Figura 1.11: Alinhamento obtido a partir do processo de traceback da Figura 1.10 e
posterior inversão das seqüências χ e ψ.
28
Capı́tulo 1. Fundamentação
Alinhamento Local: Algoritmo de Smith e Waterman
Até agora, assumimos quais seqüências queremos alinhar e procuramos pelo
melhor casamento entre elas. Uma situação muito mais comum é procurar pelo
melhor alinhamento entre subseqüências de x e y. Isto aparece, por exemplo, quando
suspeita-se que duas seqüências protéicas compartilham um domı́nio comum, ou
quando comparamos seções estendidas da seqüência genômica do DNA. É também
usualmente a mais sensitiva maneira de detectar similaridade quando comparamos
duas seqüências altamente divergentes, até quando elas possivelmente compartilham
uma origem evolucionária ao longo de todo comprimento delas. Isto ocorre porque
em tais casos somente partes da seqüência foram sujeitas a intensa seleção para
preservar similaridade detectável; o resto da seqüência terá acumulado tanto ruı́do
por mutação que não será mais alinhável. O alinhamento de subseqüências x e y
com pontuação mais elevada é chamado de melhor alinhamento local.
O algoritmo para encontrar o alinhamento local ótimo está relacionado com
o algoritmo de alinhamento global, descrito na seção anterior. Há duas diferenças.
Primeira, em cada célula na matriz, uma possibilidade extra é adicionada a Equação
1.8, permitindo F (i, j) = 0 se todas as outras opções possuem valores menores do
que 0:


0,



 F (i − 1, j − 1) + s(x , y ),
i i
F (i, j) = max

F (i − 1, j) − γ,




F (i, j − 1) − γ.
(1.9)
Adotar a opção 0 corresponde iniciar um novo alinhamento. Se o melhor alinhamento
até um ponto qualquer z tem uma pontuação negativa, é melhor iniciar um novo ao
invés de continuar o atual. Observe que uma conseqüência do 0 é que a primeira
linha e primeira coluna são preenchidos com 0s de forma que
F (i, j = 0) = 0
ao invés de
F (i = 0, j) = −j γ
e
F (i = 0, j) = 0
F (i, j = 0) = −i γ
e
como
no alinhamento global.
A segunda diferença é que agora um alinhamento pode terminar em qualquer
29
Capı́tulo 1. Fundamentação
0
H
0
E
0
A
0
G
0
A
0
W
0
G
0
H
0
E
0
E
0
P 0
0
0
0
0
0
0
0
0
0
0
A 0
0
0
5
0
0
0
0
0
0
-
5
W 0
0
0
0
2
0
H 0
E 0
A 0
E 0
10 ← 2
0
0
0
↑ 2
16 ← 8
0
0
↑ 0
8
21 ← 13
5
↑ 0
6
13
18
12
20 ⇐= 12
4
0
0
↑ 12
18
22 ← 14 ← 6
↑
↑ 4
10
18
28
20
↑
↑ 0
4
10
20
27
← 4
0
4
16
26
Figura 1.12: Matriz da programação dinâmica local. Alinhamento ótimo local com
pontuação 28.
A
A
W
W
G
–
H
H
E
E
Figura 1.13: Alinhamento obtido a partir do processo de traceback da Figura 1.12 e
posterior inversão das seqüências χ e ψ.
lugar da matriz, ao invés de levar o valor no canto inferior direito F (i = n, j = m).
Para encontrar a melhor pontuação, devemos procurar pelo maior valor na matriz
e iniciar o traceback a partir daı́. O traceback termina quando é encontrado uma
célula com o valor 0 o qual representa o inı́cio do alinhamento. Um exemplo é dado
pelas Figuras 1.12 e 1.13. Neste caso o alinhamento local é um subconjunto do
alinhamento global, mas nem sempre é o caso.
A versão local do algoritmo de programação dinâmica para o alinhamento de
seqüências foi desenvolvido por volta de 1980. Ele é conhecido como algoritmo de
Smith e Waterman [83]. Gotoh [91] formulou a eficiente versão discreta de custo de
gap que é normalmente usada.
30
Capı́tulo 1. Fundamentação
Pareamentos Repetidos, Sobrepostos e Condições Hı́bridas
Apresentaremos a seguir, de forma superficial, três outras metodologias envolvidas no alinhamento de seqüências. A primeira refere-se quando precisamos encontrar pareamentos repetidos ao invés de apenas o melhor pareamento local como
visto anteriormente. Se uma ou ambas seqüencias são longas é muito provável que
existam muitos diferentes alinhamento locais com pontuação significante, e em muitas casos, estes são muito importantes. Um exemplo seria onde há muitas cópias
de um domı́nio ou motif
5
repetido numa proteı́na. Esse problema foi resolvido por
Waterman e Eggert [88, 90].
A segunda refere-se ao pareamento sobreposto, apropriada quando supomos
que uma seqüência contém a outra, ou que elas estão sobrepostas. Isto frequentemente ocorre quando fazemos comparações entre fragmentos de seqüências de DNA
genômico, ou em grandes seqüências cromossomais. Vários tipos diferentes de sobreposição podem ocorrer (Figura 1.14). Esta metodologia surgiu da adaptação do
algoritmo global [84].
x
x
y
y
Figura 1.14: Tipos de sobreposição dos pares de seqüência x e y.
A terceira refere-se ao pareamento com condições hı́bridas, a qual mostra claramente que é possı́vel formular uma gama de variedades diferentes do algoritmo
de programação dinâmica para o alinhamento de seqüências. Todos os métodos de
alinhamento dados anteriormente são expressos em termos da matriz F (i, j), com
diversas e diferentes condições de limites e regras de repetição para gaps. Podemos obter algoritmos hı́bridos a partir de um modelo comum. Uma aplicação, por
exemplo, seria uma seqüência repetitiva y que tende a ser encontrada em cópias
seguidas não separadas por gaps. Outro exemplo, poderia ser quando observamos o
pareamento que começa no inı́cio de ambas seqüências e termina em qualquer ponto.
5
motif = tema, motivo, idéia principal, assunto principal
31
Capı́tulo 1. Fundamentação
Existem modelos mais complexos onde a programação dinâmica atua como:
• alinhamentos com pontuações de gaps discretas;
• autômatos de estado finito;
e também algoritmos de alinhamento heurı́sticos como as versões rápidas do algoritmo de Smith e Waterman:
• BLAST - Basic Local Alignment Search Tool [79];
• FASTA (FAST-ALL) - Fast Alignment for All Sequences [80].
Quando fazemos uma busca de similariedade devemos sempre considerar quais
tipos de pareamento estamos observando, e utilizar o algoritmo mais apropriado.
Na prática, há boas implementações disponı́veis para poucos casos padrões, e é mais
conveniente utilizá-los e depois pós-processar os pareamentos resultantes.
Alguns dos problemas computacionais são abordados nas referências [33, 89].
32
Capı́tulo 1. Fundamentação
1.2.5
Significância das Pontuações
Agora que sabemos como encontrar um alinhamento ótimo, como podemos
avaliar a significância de sua pontuação? Quer dizer, como decidimos se o alinhamento é biologicamente significante dando evidência à homologia, ou se é o melhor
alinhamento entre duas seqüências completamente desassociadas? Existem duas
aproximações possı́veis:
Bayesiana baseada na comparação de modelos diferentes. Um exemplo importante
é quando procuramos por um grande número de diferentes alinhamentos para
um pareamento significante. Isto é uma situação tı́pica de procura em banco
de dados;
Clássica baseada na tradicional aproximação estatı́stica de calcular a chance da
pontuação de um pareamento ser maior que um valor observado, assumindo
um modelo nulo, onde as seqüências subjacentes estão desassociadas. A Aproximação Clássica é particularmente útil administrando dados grandes com
dependências múltiplas onde as regras estão claras e explı́citas.
Nesta aproximação, olhamos a distribuição de N emparelhamentos pontuados como seqüências aleatórias independentes. Se é pequena a probabilidade
deste máximo ser maior que a melhor pontuação, então a observação é considerada significante.
No caso simples de um alinhamento sem gaps, a pontuação de um emparelhamento para uma seqüência aleatória é a soma de muitas variáveis aleatórias
semelhantes, sendo aproximada por uma distribuição normal. A distribuição
assintótica do máximo Mn de uma série de N variáveis aleatórias normais
independentes são conhecidas, e tem a forma:
λ(x−µ)
P (Mn ≤ x) ' e−KN e
.
(1.10)
Esta forma de distribuição limitada é chamada de Distribuição de Valor Extremo (DVE). Nós podemos usar a Equação 1.10 para calcular a probabilidade
do melhor emparelhamento ter maior pontuação que a máxima observada S,
33
Capı́tulo 1. Fundamentação
a partir da busca de um número grande de N seqüências não-relacionadas. Se
esta pontuação é menor que alguns valores pequenos, como 0.05 ou 0.01, então
podemos concluir que é improvável que a seqüência que dá origem à pontuação
máxima está não-relacionada, ou seja, é provável que tenha relação [33].
Com um estudo mais detalhado destas aproximações poderemos avaliar melhor a pontuação esperada num determinado alinhamento aplicando os algoritmos
descritos anteriormente [82, 85, 86, 87, 92, 26].
Algumas referências de trabalhos de análises estatı́sticas e análises de seqüências
biológicas são dadas em [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 28, 25].
34
Capı́tulo 1. Fundamentação
1.3
Algoritmos Genéticos
Neste capı́tulo será tratada a definição do que vem a ser Algoritmos Genéticos
e também de como pode ser aplicado no alinhamento de seqüências biológicas.
1.3.1
Introdução
Algoritmos Genéticos (AG) são algoritmos de busca e de metodologia de otimização de soluções baseados no mecanismo de seleção e genética naturais. Eles
combinam sobrevivência entre estruturas de seqüências “saudáveis” com uma estrutura de troca de informação aleatória. Estes algoritmos também se valem de
informações históricas para investigar um novo ponto de busca com um esperado
resultado melhorado.
Se por um lado um sistema artificial é mais robusto, por outro a sua flexibilidade e readequação é muito trabalhosa. A eficiência e a eficácia necessários
podem ser adquiridos simplesmente adaptando o AG aos sistemas, e se isso for feito
de maneira a alcançar altos nı́veis de adaptação, estes sistemas poderão executar
funções mais complexas. Caracterı́sticas como: auto-reparo, autodirecionamento
e reprodução são as regras nos sistemas biológicos, considerando que elas apenas
existam nos sistemas artificiais mais sofisticados.
Os AG são teoricamente e empiricamente comprovados para prover procura
robusta em universos complexos. O primeiro trabalho sobre o tópico foi Adaptation
in Natural and Artificial Systems [29]. Muitos artigos e dissertações estabeleceram
a validade das técnicas em funções de otimização e aplicações de controle [37, 38].
Na referência [30] deste trabalho encontra-se um endereço na Internet para um laboratório que exemplifica bem esse fato, onde 1000 computadores estão ligados e
executando AG paralelamente para resolver inúmeros problemas. As razões por trás
do número crescente de aplicações estão claras. Estes algoritmos são computacionalmente simples e ainda sim poderosos na sua busca por melhoria. Além disso, eles não
são fundamentalmente limitados por suposições restritivas sobre o universo de busca
(suposições concernentes à continuidade, existência de derivadas, unimodalidade, e
35
Capı́tulo 1. Fundamentação
outros assuntos).
Muitos trabalhos atuais utilizando AG no problema de alinhamento estão voltado para o multialinhamento [95, 96, 107, 108].
A tentativa de aplicar o AG ao problema de multialinhamento surgiu em 1993
quando Ishikawa [98] publicou um AG hı́brido que não tentava otimizar diretamente
o alinhamento mas a ordem na qual as seqüências deveriam ser alinhadas usando
programação dinâmica. Claro, isto limita o algoritmo à função objetiva que pode ser
usada com programação dinâmica. Mesmo que, os resultados obtidos daquele modo
estavam fomentando o desenvolvimento do uso de AGs em análise de seqüências
biológicas [97].
O primeiro AG capaz de trabalhar com seqüências numa maneira mais geral foi
descrito uns poucos anos depois por Notredame e Higgins [99], imediatamente antes
de um trabalho similar por Zhang [101]. Neste dois AGs, uma população é feita
de multialinhamentos completos de seqüências e os operadores têm acesso direto às
seqüências alinhadas: eles inserem e movimentam gaps numa maneira aleatória ou
semi-aleatória.
Durante os anos seguintes, foram introduzidas pelo menos três novas estratégias
de multialinhamento de seqüências baseado em algoritmos evolutivos [102, 103, 104].
Cada um destes conta com um princı́pio similar ao SAGA: uma população de alinhamentos múltiplos desenvolvem-se por seleção, combinação e mutação. A população
é feita de alinhamentos e as mutações programas de processamento strings
6
que
misturam os gaps usando modelos complexos. A diferença principal entre o SAGA
e estes algoritmos recentes tem sido o projeto de melhores operadores de mutação
que melhoram a eficiência e a exatidão dos algoritmos. O SAGA utiliza um esquema de escalonamento automático que controla o uso de 22 operadores diferentes
para combinar alinhamentos ou mutações entre suas gerações. Quando usado para
aperfeiçoar as somas bem conhecidas de funções objetivas, o SAGA executa melhor do que alguns dos pacotes alternativos extensamente utilizados. Isto é devido
à habilidade de alcançar uma solução ótima e também à precisão do alinhamento
6
String (em informática): série de caracteres que são processados como uma unidade de in-
formação.
36
Capı́tulo 1. Fundamentação
comparando-o com alinhamentos de referência baseados em seqüências de estruturas terciárias conhecidas. A principal atração da aproximação é a habilidade de
aperfeiçoar qualquer função objetiva aplicada a ela [99].
Outros trabalhos interessantes podem ser encontrados nas referências: [100,
110, 109, 106, 105, 111, 112, 113, 114].
37
Capı́tulo 1. Fundamentação
1.3.2
Definição e Funcionamento
Num ambiente competitivo onde os indivı́duos mais fortes são os prováveis
vencedores, é possı́vel determinar o melhor através de critérios especı́ficos.
Em AG, presume-se que a solução potencial de qualquer problema é um indivı́duo que pode ser representado por um conjunto de parâmetros. Estes parâmetros
são vistos como um gene de um cromossomo e podem ser estruturados por uma
seqüência (string) com valores binários. Um valor, conhecido por valor de aptidão
(obtido através de uma função de aptidão7 ), é usado para refletir o grau de “qualidade” do cromossomo utilizando-se de critérios especı́ficos [45]. Por exemplo, num
problema envolvendo máximos e mı́nimos, é possı́vel encontrar uma solução ótima
onde
cada
ponto
(Xi , f (Xi ))
é
interpretado
em
AG
como
sendo
0
(i − esimo indivíduo, valor da avaliação dos critérios).
Na evolução genética, processo iterativo do AG, o indivı́duo mais apto (com
maior fitness) tem a tendência a gerar como frutos, descendentes de boa qualidade, melhorando a cada geração o material genético da população (conjunto de
indivı́duos). Numa aplicação prática de AG, precisa-se estabelecer uma população
de indivı́duos e estes podem ser iniciados com valores aleatórios. O tamanho da
população varia de um problema a outro ainda que algumas linhas de direção sejam
dadas em [39]. Em cada ciclo de operação genética, uma geração subseqüente é
criada a partir dos cromossomos da população atual. Estes podem somente suceder
se um grupo destes cromossomos, chamados “pais”, é selecionado por uma rotina
de seleção especı́fica (estratégia de seleção). Os genes dos pais são misturados e recombinados para a produção de descendentes na próxima geração. A partir disto, é
esperado, deste processo evolutivo (manipulação de genes), que o “melhor” cromossomo criará o maior número de descendentes, e assim obtenha uma grande chance de
sobrevivência nas gerações subseqüentes, simulando o mecanismo da seleção natural.
O ciclo de evolução é repetido até um determinado critério de término. Este
critério pode ser o número de ciclos de evolução, ou a soma de variações de indivı́duos
entre gerações diferentes, ou um valor de fitness pré-definido.
7
ou valor fitness: obtido através de uma função fitness
38
Capı́tulo 1. Fundamentação
Duas operações fundamentais são utilizadas para facilitar o ciclo de evolução:
cruzamento (crossover) e mutação, embora a rotina de seleção (ou reprodução) possa
ser considerada como outra operação.
A seguir, na Figura 1.15, é exemplificado o mecanismo de cruzamento entre
dois cromossomos em apenas uma posição. Nesta operação, uma posição ao longo da
seqüência é fixado aleatoriamente para cruzamento e as partes dos dois cromossomos
além deste ponto serão trocadas para formar a descendência como à direita na Figura
1.15. Uma variável, chamada de probabilidade de cruzamento pc , é utilizada para
controlar a freqüência de ocorrência do cruzamento, que na prática tem um valor
tı́pico entre 60% e 100% [32] 8 .
Figura 1.15: Cruzamento de dois cromossomos em apenas uma posição.
Já na mutação (Figuras 1.16 e 1.17), ela se aplica individualmente a cada
descendência após o cruzamento. Nesse mecanismo altera-se aleatoriamente uma
posição da seqüência com uma probabilidade de mutação pm que normalmente está
abaixo de 1% [32] 9 . Esta probabilidade pm é responsável pelo aumento da variabilidade da população. Tratando dos extremos, se utilizarmos um valor muito baixo
para pm significa que queremos uma busca mais refinada, ou seja, convergência; já
um valor muito alto para pm , sugere uma busca aleatória.
Na implementação do AG, a escolha de pm e pc , assim como os outros parâmetros de controle pode ser um problema de otimização não-linear difı́cil de ser resol8
9
Sabe-se também que na genética natural pode haver mais de um ponto de cruzamento [71].
Da mesma forma que no cruzamento, pode haver mais de um ponto de mutação [71].
39
Capı́tulo 1. Fundamentação
Figura 1.16: Mutação em uma posição do cromossomo biológico.
Figura 1.17: Mutação em uma posição do cromossomo binário.
vido. Além disso, a configuração deles é extremamente dependente sob a natureza
da função de aptidão [32]. DeJong, Spears e Grefenstette [40, 41] sugerem valores
para pm e pc conforme o tamanho da população, mas intuitivamente podemos pensar, numa aplicação simples de maximização ou minimização, da seguinte forma:
quando a população é relativamente pequena, de tamanho 30, utilizamos taxas pm e
pc maiores, 1% e 90% respectivamente; e quando a população é grande, de tamanho
100, utilizamos pm e pc menores, 0.1% e 60% respectivamente.
Quando a homogeneidade (falta de diversidade/heterogeneidade) é um problema, aumenta-se o valor de pm para que no processo crie-se divergências nas
gerações futuras. Uma outra questão importante é a escolha do tamanho da população, se escolhermos um tamanho muito pequeno para a população, esta será “pobre” devido à quantidade insuficiente de amostras (indivı́duos); já uma população
grande conterá representantes de um vasto número de hiperplanos. Um dos resultados da utilização de uma grande população é a não convergência prematura para
uma solução sub-ótima (ótimo local). Por outro lado, o processo fica lento, pois há
mais processamento por gerações, tornando a convergência mais lenta [5].
A Figura 1.18 é um fluxograma de um algoritmo genético que começa definindo
um cromossomo como uma seqüência de parâmetros valorados a serem aperfeiçoados.
40
Capı́tulo 1. Fundamentação
Já a Figura 1.19 é um esqueleto do algoritmo genético básico do ponto de vista da
implementação.
Figura 1.18: Fluxograma para exemplificar o algoritmo genético.
41
Capı́tulo 1. Fundamentação
Algoritmo Genético ( . . . ) {
// Iniciando as variáveis
t ← 0;
terminado ← falso;
P ← Objeto Populaç~
ao(...);
// Gerando a populaç~
ao inicial, usualmente com valores aleatórios
P.inicia populacao();
// Calcula o fitness da populaç~
ao inicial
P.calc fitness();
// Ciclo evolutivo
enquanto n~
ao terminado faça
// seleciona uma sub-populaç~
ao para produç~
ao de descententes
P’ ← P.selecionaPais();
// recombina os "genes" dos pais selecionados
P’.recombina();
// perturbar a populaç~
ao emparelhada estocasticamente
P’.muta();
// calcula os novos fitness
P’.calc fitness();
// seleciona os sobreviventes através do fitness
P.adicione(P’);
P.sobreviventes();
// incrementa o contador
t ← t + 1;
// verifica término
terminado ← (t = número ciclos máximos) ou
(P.melhor fitness() >= fitness máximo) ou (...);
fim enquanto;
}
Figura 1.19: Estrutura convencional do algoritmo genético.
42
Capı́tulo 1. Fundamentação
1.3.3
Algoritmo Genético Paralelo
Para melhorar a eficiência do AG a fim de aplicá-lo a problemas mais complexos ou que exigem um processamento computacional maior, é necessário explorar e
aproveitar suas caracterı́sticas intrı́nsecas. Como visto anteriormente, a técnica do
AG é fácil de entender e de utilizar, e em poucos casos, é necessário desenvolvê-lo a
partir de formulações matemáticas complexas [32]. Estas não são as únicas razões
que fazem do AG uma técnica de otimização poderosa, ela também é atrativa pelas
seguintes caracterı́sticas:
• Fácil implementação em arquitetura paralela;
• Direcionado à problemas multiobjetivos;
• Capaz de tratar problemas com restrições e regras;
• Podem resolver problemas multimodelos, não-diferenciáveis, não-contı́nuos ou
até mesmo NP-completa
10
[42].
Como o AG possui arquitetura intrı́nseca paralela [32], não há um esforço extra
para construir um modelo computacional paralelo.
Dependendo da maneira em que o paralelismo é explorado na estrutura populacional e mecanismo de recombinação do AG, podemos classificar os métodos
11
como: Global, Migração e Difusão. Alguns trabalhos relacionados ao AG paralelo:
[56, 57].
10
Problemas NP-completa: são os que têm a questão da complexidade ou tratabilidade não
resolvida, pois não se sabe se existe ou não algoritmo polinomial que o resolva [2].
11
Existe um número de métodos paralelos baseados em AG para melhorar a velocidade computacional [43, 104].
43
Capı́tulo 1. Fundamentação
AG Global
Pode ser implementado num computador com múltiplos processadores e memória compartilhada (SMM - Shared Memory Multiprocessor) ou num computador
com memória distribuı́da (DSM - Distributed Shared Memory). Num SMM, os
cromossomos são armazenados na memória compartilhada e cada processo acessa
um cromossomo e devolve seu valor de aptidão sem qualquer conflito. Obviamente
é necessário uma sincronização entre as gerações e também um balanceamento computacional para melhor utilização de cada processador.
Num DSM, a população pode ser armazenada em um único processador para
simplificar
as
operações
genéticas.
Este
é
baseado
na
arquitetura
fazendeiro-trabalhador/mestre-escravo (farmer-worker/master-slave), como mostrado na Figura 1.20. O processador fazendeiro (PF) é responsável por enviar cromossomos aos processadores trabalhadores (PT) que avaliam a aptidão destes cromossomos. O PF também coleta seus resultados e aplica as operações genéticas para a
criação da próxima geração. Uma desvantagem deste método é que os PTs esperam
enquanto o PF está executando seu trabalho [45, 46, 47].
AG Fazendeiro
Seleção
Agregação do Fitness
:
»»»
»»»
»
»»
»
9»
6
?
Trabalhador 1
Trabalhador 2
Recombinação
Recombinação
Mutação
Mutação
Cálculo do Fitness
Cálculo do Fitness
yX
X
XXX
XXX
XXX
z
Trabalhador k
s s s
Recombinação
Mutação
Cálculo do Fitness
Figura 1.20: AG Global em Arquitetura DSM.
44
Capı́tulo 1. Fundamentação
AG Migração
Outro mecanismo de processamento paralelo é o AG Migração (Coarse Grained Parallel GA), que divide a população em subpopulações as quais são tratadas
como unidades separadas de procriação. Neste processo, indivı́duos com bom material genético migram entre subpopulações de tempo em tempo com o propósito de
aumentar a heterogeneidade. Um pseudo-código é mostrado na Figura 1.21
Em cada nódo (AG):
enquanto n~
ao terminado faça
// Seqü^
encial:
Seleç~
ao;
Reproduç~
ao;
Cálculo Fitness;
// Paralelo:
Enviar Emigrantes;
Receber Imigrantes;
fim enquanto;
Figura 1.21: Pseudo-código do AG Migração [32].
As Figuras 1.22,1.23 e 1.24 mostram diferentes topologias de migração. A Figura 1.22 mostra a topologia de migração em anel, onde indivı́duos são transferidos
entre subpopulações adjacentes unidirecionalmente. A Figura 1.23 mostra a topologia de migração da vizinhança, onde a migração pode ser feita entre subpopulações
vizinhas mais próximas de maneira bidirecional. Por fim, a Figura 1.24 descreve uma
migração irrestrita, onde uma sub-população migra para outra. Alguns parâmetros
devem ser analisados para se obter uma estratégia de seleção que torne o processo
de migração bem-sucedido. São eles:
Taxa de Migração para administrar o número de indivı́duos na migração;
Intervalo de Migração para administrar a freqüência de migrações.
45
Capı́tulo 1. Fundamentação
Normalmente estes parâmetros são pré-definidos, porém [48, 49] introduz a
ocorrência de migração uma vez que a sub-população tenha convergido.
Figura 1.22: Topologia de Migração em Anel ou Unidirecional.
Figura 1.23: Topologia de Migração da Vizinhança ou Bidirecional.
46
Capı́tulo 1. Fundamentação
Figura 1.24: Topologia de Migração Irrestrita ou Multidirecional.
47
Capı́tulo 1. Fundamentação
AG de Difusão
O AG de Difusão (Fine Grained Parallel GA), Figura 1.25, é a arquitetura que
pode ser usada como um processador parelalo de AG. Ele considera a população
como uma estrutura única e contı́nua. Cada indivı́duo é designado a uma localização
geográfica numa superfı́cie populacional e usualmente colocada numa disposição 2D
(bidimensional). Esta é a função da topologia do processamento de elementos em
muitos computadores paralelos que são construı́dos nesta forma. Outras topologias
estudadas podem ser encontradas em [50, 51].
Figura 1.25: Topologia AG de Difusão.
É permitido aos indivı́duos a procriação com outras subpopulações próximas a
48
Capı́tulo 1. Fundamentação
sua vizinhança. Esta vizinhança é comumente adjacente, devido à restrições de comunicações entre computadores paralelos. Um pseudo-código é mostrado na Figura
1.26.
Em cada nódo (Ii,j ):
Iniciar;
enquanto n~
ao terminado faça
// Seqü^
encial:
Cálculo Fitness;
// Paralelo:
Enviar Indivı́duo ao Vizinho;
Receber Indivı́duo do Vizinho;
Selecionar Parceiro;
Reproduzir;
fim enquanto;
Figura 1.26: Pseudo-código do AG de Difusão [32].
Manderick e Spiessens [52] introduziram uma arquitetura paralela de AG
com uma população distribuı́da numa topologia 2D. Seleção e emparceiramento
eram somente possı́veis com indivı́duos vizinhos. Em acréscimo, [53, 54] introduziram um AG paralelo assı́ncrono, ASPARAGOS (Asynchronous Parallel Genetic
Optimization Strategy) system. Nesta configuração, o AG era implementado numa
rede escada conectada (ladder network) usando Transputers
12
com um indivı́duo
por processador. As aplicações práticas do AG de Difusão têm sido relatadas em
[55] para resolver problemas de empacotamento binomiais 2D (problema de otimização) [59, 60], e a mesma técnica tem sido usada para cuidar de um problema
de sincronização de tarefas [61, 58].
12
Famı́lia de microprocessadores Inmos com processadores interligados, programável numa lin-
guagem Occam.
49
Capı́tulo 2
Métodos e Materiais
Trataremos neste capı́tulo dos métodos e técnicas utilizados para o alinhamento
de seqüências biológicas e no próximo capı́tulo abordaremos os resultados obtidos.
2.1
Ambiente de Simulação
2.1.1
Linguagens de Programação Utilizadas
Para que houvesse portabilidade e clareza no algoritmo, primeiramente implementou-se em Java (Java Virtual Machine - JVM), porém o Java necessita de muita
memória e a velocidade de execução do algoritmo era muito lenta. Para resolver o
problema da velocidade e ainda manter a portabilidade o algoritmo, este foi convertido para a linguagem C++. Também foram utilizados scripts do shell do Linux
para facilitar a compilação, execução e coleta dos resultados.
Problemas Encontrados na Conversão do Programa
Um dos problema da conversão de um algoritmo escrito em Java para um
outro escrito em C++ está no tratamento das instâncias dos objetos quando estas
devem ser descartadas. No Java existe o Coletor de Lixo (Garbage Colector) que
se encarrega das instâncias dos objetos não mais utilizadas (referenciadas), já em
50
Capı́tulo 2. Métodos e Materiais
C++ este mecanismo automático não existe e é o programador que define quando
as instâncias são criadas e apagadas.
A versão do algoritmo em C++ para o AG Serial funcionou tanto no Linux
(RedHat 9, RedHat Enterprise Server e Fedora Core 1) quanto no Windows XP. A
versão paralela do AG não foi testada no Sistema Operacional Windows XP.
Problemas Encontrados no Desempenho do Programa
Mesmo após a conversão do algoritmo, o processo ainda era lento. Foi adotada
uma caracterı́stica presente no SAGA [99] que é a do fitness exclusivo, onde a população é totalmente heterogênea e cada indivı́duo possui um único valor de fitness.
O que realmente melhorou em muito a eficiência do algoritmo foi a reestruturação
dos indivı́duos da população (seqüências em processo de alinhamento), onde os gaps
alinhados foram deslocados para o final do alinhamento. Maiores detalhes serão
discutidos nas seções subseqüentes e no próximo capı́tulo.
2.1.2
Estrutura das Máquinas Utilizadas
As máquinas utilizadas para o processamento dos algoritmos foram:
• 1 Dual Intel Xeon 3.06GHz com: 4Gb de RAM e 120Gb de HD;
• 1 Athlon MP 2000 1.6GHz com: 4Gb de RAM e 60Gb de HD;
• 5 Athlon XP 2600 2.1GHz com: 500Mb de RAM e 60Gb de HD.
• Switch Planet Gigabit Ethernet: computadores interligados a 100Mbps FullDuplex.
51
Capı́tulo 2. Métodos e Materiais
2.2
Alinhamento Biológico Através do Algoritmo
Genético
Esta seção propõe um método alternativo baseado em Algoritmo Genético
para achar o alinhamento par-a-par ótimo [62, 63]. Este alinhamento de seqüências
é descrito como um cromossomo, onde cada cromossomo é associado a uma função de
aptidão baseado na matriz de substituição BLOSUM50. Para cada geração alguns
pares de cromossomo são aleatoriamente escolhidos para cruzamento. O próximo
passo é a mutação da descendência, levando-se em consideração a taxa de mutação.
O último passo é selecionar os cromossomos com maiores valores obtidos através
da função de aptidão. Este ciclo é repetido até que um critério de término seja
alcançado. Este critério também pode ser fixado pelo número de ciclos de evolução,
ou a quantidade de variação de indivı́duos entre diferentes gerações, ou um valor
pré-definido de aptidão. Neste trabalho foi escolhido o número de ciclos de evolução
(execuções computacionais). É descrito a seguir os detalhes desta implementação e
seus resultados.
2.2.1
Aproximação AG
Nesta seção é mostrado as estruturas de dados utilizadas e suas operações.
Estrutura de Dados
Para ilustrarmos esta aproximação, usaremos duas pequenas seqüências de
aminoácidos, S1 = HEAGAWGHEE e S2 = PAWHEAE, onde cada aminoácido é descrito na
Tabela 1.1. Dois possı́veis alinhamentos são mostrados nas Figuras 2.1 e 2.2.
S1 H E A G A W G H E E - - - - - - S2 - - - - - - - - - - P A W H E A E
Figura 2.1: Um possı́vel alinhamento.
Como mostra a Figura 2.3, o cromossomo é formado por 34 bits, onde os
primeiros 17 bits representam S1 , e os últimos 17 bits S2 . Este número é obtido
52
Capı́tulo 2. Métodos e Materiais
S1 H - E - A - G - A - W - G - H E E
S2 - P - A - W - H - E - A - E - - Figura 2.2: Outro possı́vel alinhamento.
devido à quantidade de aminoácido em S1 (10) e S2 (7), logo é possı́vel no máximo
17 aminoácidos e 17 gaps. Observe que os alinhamentos mostrados nas Figuras 2.1 e
2.2 são apenas dois de muitos alinhamentos possı́veis com o pior fitness, f (S1 , S2 ) =
−8 ∗ 17 = −1361 , devido ao número máximo de pareamento entre os aminoácidos e
gaps de ambas seqüências.
H - E - A - - G A - W G H E - - E P - - - A W H - E - A E - - - - 1 0 1 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1 0 0 0 1 1 1 0 1 0 1 1 0 0 0 0 0
Figura 2.3: Descrição da configuração cromossômica binária.
Um dado importante é quanto a disposição dos aminoácidos no alinhamento a
qual deve ser respeitada, porque para a realização do alinhamento, os aminoácidos
devem ser apenas deslocados de suas posições e não trocados ou alterados, respeitando sempre a ordem original da seqüência. Portanto, o alinhamento é uma relação
apenas entre as seqüências envolvidas, isto é, se tomamos as duas seqüências S1 e S2 ,
e encontramos um alinhamento ótimo, isto não alterará as seqüência S1 e S2 quanto
à ordem de seus aminoácidos.
1
considerando a penalidade para gaps igual a −8.
53
Capı́tulo 2. Métodos e Materiais
Avaliação da Função de Aptidão
Para a avaliação da função de aptidão, utilizaremos um subconjunto da matriz
de substituição BLOSUM50 Tabela 2.12 .
Tabela 2.1: Subconjunto da matriz de substituição BLOSUM50.
H E A G A W G H E E
P
-2 -1 -1
-2
-1
-4
-2
-2
-1
-1
A
-2 -1
5
0
5
-3
0
-2
-1
-1
W
-3 -3 -3
-3
-3
15 -3
-3
-3
-3
H
10
0 -2
-2 -2
-3
-2
10
0
0
E
0
6
-1
-3
-1
-3
-3
0
6
6
-2 -1
5
0
5
-3
0
-2
-1
-1
-1
-3
-1
-3
-3
0
6
6
A
E
0
6
A Figura 2.4 ilustra como os valores de aptidão das seqüências S1 e S2 são
determinados considerando-se cada metade do cromossomo na aproximação AG, a
matriz de substituição BLOSUM50, e os gaps. A avaliação da função de aptidão
neste caso é: f (S1 , S2 ) = −2 − 8 + 5 − 8 − 8 − 8 − 1 − 8 + 0 + 0 − 8 − 8 = −54.
H
E
A
-
-
G
A
W
G H
E
E
P
-
A
W
H
-
E
-
A
E
-
-
-2
-8
5
-8
-8
-8 -1
-8
0
0
-8 -8
Figura 2.4: Função de aptidão (fitness function).
A Figura 2.5 mostra um cromossomo representando um alinhamento.
2
como mostrado na Seção 1.2.3 - Tabela 1.4.
54
Capı́tulo 2. Métodos e Materiais
H - E - A - - GA - WGHE - - E. - - PA - - - W - HE - - - A - E
1 0 1 0 1 00 1 1 0 1 1 1 1 00 1 .00 1 1 000 1 0 1 1 000 1 0 1
ou
H - E - A - - G A - WGHE - - E
- - PA - - - W - H E - - - A - E
1 0 1 0 1 00 1 1 0 1 1 1 1 0 0 1
0 0 1 1 0 00 1 0 1 1 0 0 0 1 0 1
Figura 2.5: Representação de um alinhamento na aproximação AG.
55
Capı́tulo 2. Métodos e Materiais
Cruzamento
A operação de cruzamento mescla ambos cromossomos (metade/metade) gerando duas descendências. As Figuras 2.6, 2.7 e 2.8 descrevem este processo.
H - E - A - - G A - W G H E - - E
- - P A - - - W - H E - - - A - E
1 0 1 0 1 0 0 1 1 0 1 1 1 1 0 0 1
0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 0 1
- H - E - A G - A W - G - H - E E
- - P A - - - W - H E - - - A - E
0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 1
0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 0 1
Figura 2.6: Pais selecionados para a operação de cruzamento na aproximação AG.
H - E - A - - G A - W G H E - - E
- - P A - - - W - H E - - - A - E
1 0 1 0 1 0 0 1 1 0 1 1 1 1 0 0 1
0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 0 1
k´
3́
Q
´
+́Q
s
- H - E - A G - A W - G - H - E E
- - P A - - - W - H E - - - A - E
0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 1
0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 0 1
Figura 2.7: Operação de cruzamento na aproximação AG.
H - E - A - - G A - W G H E - - E
- - P A - - - W - H E - - - A - E
1 0 1 0 1 0 0 1 1 0 1 1 1 1 0 0 1
0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 0 1
- H - E - A G - A W - G - H - E E
- - P A - - - W - H E - - - A - E
0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 1
0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 0 1
Figura 2.8: Filhos gerados após a operação de cruzamento na aproximação AG. As
duas primeiras linhas representam um filho e as duas últimas o outro.
56
Capı́tulo 2. Métodos e Materiais
2.2.2
Mutação
Há uma sutil diferença na operação de mutação AG devido ao número de
aminoácidos no cromossomo que deve ser sempre o mesmo. Dessa forma, se a
mutação ocorre em qualquer bit 1 alterando-o para bit 0, o próximo bit 0 (bit
complementar) será modificado para bit 1, dentro de cada metade do cromossomo,
garantindo que a quantidade de aminoácidos da seqüência original seja sempre a
mesma. Este mesmo procedimento é aplicado no caso da mutação ocorrer em qualquer bit 0. Caso a mutação ocorra no último bit da primeira metade, a busca do
próximo bit complementar é iniciado a partir do inı́cio da seqüência; já no caso de
ocorrer no último bit da segunda metade, a busca pelo bit complementar é feita a
partir do inı́cio da segunda metade da seqüência.
As Figuras 2.9, 2.10 e 2.11 mostram um exemplo simples de como opera a
mutação. Outro exemplo mais detalhado é dado pelas Figuras 2.12, 2.13 e 2.14.
As posições selecionadas para mutação estão marcadas de vermelho, os bits complementares estão marcados de azul (para conservar a cadeia de aminoácidos), e as
posições marcadas de verde mostram o deslocamento sofrido pela seqüência devido
à mutação.
H - E - A - - GA - WGHE - - E.P - - A - - - W - HE - - - A - E
1 0 1 0 1 00 1 1 0 1 1 1 1 00 1 . 1 00 1 000 1 0 1 1 000 1 0 1
Figura 2.9: Mutação AG: 2 pontos de mutação selecionados aleatoriamente.
H - - - A - - GA - WGHE - - E.P - - AW - - W - HE - - - A - E
1 000 1 00 1 1 0 1 1 1 1 00 1 . 1 00 1 1 00 1 0 1 1 000 1 0 1
Figura 2.10: Mutação AG: executando a mutação nos 2 pontos selecionados.
H - - EA - - GA - WGHE - - E.P - - AW - - - - HE - - - A - E
1 00 1 1 00 1 1 0 1 1 1 1 00 1 . 1 00 1 1 0000 1 1 000 1 0 1
Figura 2.11: Mutação AG: alterando outras posições para manter o mesmo número
de aminoácidos.
57
Capı́tulo 2. Métodos e Materiais
H - - EA - - GA - WGHE - - E.P - - AW - - - - HE - - - A - E
1 00 1 1 00 1 1 0 1 1 1 1 00 1 . 1 00 1 1 0000 1 1 000 1 0 1
Figura 2.12: Mutação AG: 2 pontos de mutação selecionados aleatoriamente.
H - - EA - - GA - W - HE - - E.P - - AW - - - - HE - - - A - 1 00 1 1 00 1 1 0 1 0 1 1 00 1 . 1 00 1 1 0000 1 1 000 1 00
Figura 2.13: Mutação AG: executando a mutação nos 2 pontos selecionados.
H - - EA - - GA - W - GHE - E.PA - WH - - - - EA - - - E - 1 00 1 1 00 1 1 0 1 0 1 1 1 0 1 . 1 1 0 1 1 0000 1 1 000 1 00
Figura 2.14: Mutação AG: alterando outras posições para manter o mesmo número
de aminoácidos.
58
Capı́tulo 2. Métodos e Materiais
Resumo da Aproximação AG
Na operação AG uma seleção de subseqüências é feita a partir dos cromossomos
da população atual. Os pais (50%) são selecionados aleatoriamente e seus genes são
misturados, recombinados, e alterados (mutação) para a produção de descendentes
na próxima geração. A escolha dos membros sobreviventes é baseada nos maiores
valores da função de aptidão para manter o mesmo tamanho da população (não há
fitness repetido na população). Este processo é repetido em cada ciclo ou geração
até atingir o número de ciclos de evolução (execuções computacionais). As Figuras
2.15 e 2.16 ilustram essa aproximação.
59
Capı́tulo 2. Métodos e Materiais
Figura 2.15: Fluxograma da aproximação AG.
60
Capı́tulo 2. Métodos e Materiais
Algoritmo Genético ( . . . ) {
// iniciando as variáveis
t ← 0;
terminado ← falso;
P ← Objeto Populaç~
ao(...);
Pt ← Objeto Populaç~
ao(...);
// gerando a populaç~
ao inicial, usualmente com valores aleatórios
P.inicia populacao();
// calcula o fitness da populaç~
ao inicial
P.calc fitness();
// ciclo evolutivo
enquanto n~
ao terminado faça
// reinicia variáveis auxiliares
Pt.inicia populacao();
j ← 0;
// gera 50% de indivı́duos
para i ← 0 até P.tamanhoPopulacao() passo 4 faça
// seleciona uma sub-populaç~
ao
P’(j) ← P.selecionaPais();
// recombina os "genes" dos pais selecionados
P’(j).recombina();
// perturbar a populaç~
ao
P’(j).muta();
// calcula os novos fitness
P’(j).calc fitness();
// acrescenta os novos numa populaç~
ao temporária
Pt.adicione(P’(j));
// incrementa o contador
j ← j + 1;
fim para;
// acrescenta os novos na populaç~
ao atual
P.adicione(Pt);
// seleciona os sobreviventes através do fitness
P.sobreviventes();
// incrementa o contador
t ← t + 1;
// verifica término
terminado ← (t = número ciclos máximos) ou
(P.melhor fitness() >= fitness máximo);
fim enquanto;
}
Figura 2.16: Algoritmo da aproximação AG.
61
Capı́tulo 2. Métodos e Materiais
2.2.3
Dados Utilizados no AG Serial
A Tabela 2.2 mostra as seqüências utilizadas nas simulações. Mais detalhes sobre cada uma das seqüências podem ser encontrados no site do NCBI
(http://www.ncbi.nlm.nih.gov/ [70]) através do código da proteı́na. As seqüências
SEQex1 e SEQex2 foram utilizadas apenas para testar os algoritmos.
Tabela 2.2: Seqüências utilizadas nas simulações
Código da Proteı́na Descrição
Qtd.Nucleot.
NCBI
SEQex1
Seqüencia de teste 1
30
Não
SEQex2
Seqüencia de teste 2
21
Não
P69905
Hemoglobin Alpha Chain
138
Sim
P68871
Hemoglobin Beta Chain
135
Sim
P02185
Myoglobin
459
Sim
SMHY1C
Metallothionein I - Chinese hamster
183
Sim
SMRT1
Metallothionein I - Rat
183
Sim
O tamanho da população é constante (durante as gerações) com 600 indivı́duos.
Cada indivı́duo da população possui um fitness exclusivo e aleatório, obviamente
cada indivı́duo é único. A taxa de cruzamento foi fixada em pc = 50%. A população
inicial relativa a cada alinhamento estudado foi sempre a mesma. A condição de parada foi estabelecida para 1000, porque mais do que 1000 gerações torna o algoritmo
ineficiente.
Também distingüiremos duas versões do algoritmo genético:
Reestruturada (RE): que remove os gaps alinhados, ou seja, desloca os gaps
alinhados para o final do alinhamento;
Não-reestruturada (NRE): que permite os gaps entre os resı́duos de um alinhamento.
62
Capı́tulo 2. Métodos e Materiais
Para cada análise feita foi necessário um conjunto de mostras. O critério para
obtenção destas amostras foi o seguinte:
• 100 amostras quando: 20% < variância;
• 50 amostras quando: 10% < variância ≤ 20%;
• 20 amostras quando: variância ≤ 10%.
63
Capı́tulo 2. Métodos e Materiais
2.3
Alinhamento Biológico Através do Algoritmo
Genético Paralelo
Nesta seção abordaremos outras técnicas para a aplicação do AG, só que agora
em paralelo. Conforme a topologia: Global [64].
2.3.1
Computação Distribuı́da
Muitos dos problemas computacionais relacionados com tempo de resposta,
simulações e outros trabalhos que exigem processamento intensivo estão sendo resolvidos com a utilização dos sistemas distribuı́dos [7]. Se um processo pode ser
divido em tarefas independentes, então poderá ser processado por um único sistema (batch processing - processamento em lote); ou então serem processadas duas
ou mais tarefas ao mesmo tempo caso haja mais processadores disponı́veis; ou estas tarefas podem ser distribuı́das entre alguns sistemas (computação distribuı́da).
Se um trabalho não pode ser dividido em tarefas independentes é necessário processá-lo em um sistema único, em paralelo se houver mais processadores disponı́veis
(multithreading - multitarefa), ou um sistema distribuı́do confiável com memória e
armazenamento compartilhados. Estes conceitos estão ilustrados na Figura 2.17.
Tipos de Computação Distribuı́da
A seguir são descritos brevemente cada um dos tipos de computação distribuı́da
mais conhecidos.
Balanceamento de carga. É o mais simples e comum de ser usado para o processamento em lote. Um sistema central recebe comandos o qual decide onde
eles devem ser executados, dependendo da disponibilidade e carga do sistema.
Fila é um sistema livremente disponı́vel que controla processamento em lote
simples e balanceamento de carga;
Computação pela Web. Depende de um servidor que disponibiliza serviços on64
Capı́tulo 2. Métodos e Materiais
Figura 2.17: Visão estratégica computacional [65].
um cı́rculo completo representa uma tarefa independente;
um semi-cı́rculo representa uma subtarefa;
a cor cinza escura indica que a tarefa (ou subtarefa) está sendo executada.
65
Capı́tulo 2. Métodos e Materiais
line processado via Common Gateway Interface - (CGI). Os resultados são
devolvidos como uma página web ou por correio eletrônico (eletronic mail email);
Computação homóloga. É descrita por uma rede descentralizada onde cada computador compartilha recursos como arquivos, impressoras, ou aplicações com
estados iguais. Assim, qualquer computador pode ser um servidor provendo
serviços ou um cliente solicitando serviços;
Computação através de Cluster. Clusters são coleções de computadores conectados por uma rede local rápida (fast local area network - fast LAN) que
distribuem tarefas com balanceamento de software, ou pela criação e uso
de aplicações paralelas com bibliotecas de troca/passagem de mensagens tais
como: a Máquina Virtual Paralela (Parallel Virtual Machine - PVM) ou Multicomputador Local (Local Area Multicomputer - LAM), uma implementação
do padrão de Interface de Troca de Mensagem (Message Passing Interface MPI);
Computação através de Grid. Grids são recursos computacionais distribuı́dos
geograficamente, como os supercomputadores, clusters e sistemas de armazenamento conectados por uma rede dedicada ou através da Internet. Estes
recursos podem ser gerenciados por diferentes organizações;
Computação através de Objeto Distribuı́do . São objetos alocados em diversas máquinas numa rede e gerenciados de forma a trabalharem transparentemente como um só servidor. Quando uma requisição por um objeto é recebida
num dos computadores desta rede, este encaminha para o servidor onde reside
tal objeto, este servidor por sua vez devolve uma resposta ao computador que
encaminhou a requisição para que por fim responda à requisição inicial;
CORBA. A especificação Common Object Request Broker Architecture (CORBA)
sobre o Object Management Group (OMG) é um padrão para criação e utilização de objetos distribuı́dos. Ele especifica seu próprio protocolo, o Internet
Inter-ORB Protocol (IIOP);
66
Capı́tulo 2. Métodos e Materiais
DCOM e .NET. Microsoft’s Distributed Component Object Model (DCOM) é baseada em seu Component Object Model (COM), no protocolo Distributed Computing Environment (DCE) e no protocolo Remote Procedure Call (RPC).
COM provê um conjunto de interfaces a clientes e servidores para se comunicarem de forma idêntica. Um cliente DCOM chama métodos de um servidor
de objetos DCOM primeiro adquirindo um ponteiro para uma de suas interfaces e então usando-o como se fosse um objeto local. DCOM tem recentemente
se tornado parte do novo sistema .NET da Microsoftr ;
Java RMI. A tecnologia Java RMI da Sunr trabalha com servidores de objetos que
definem uma interface, na qual pode ser usada para acessar os objetos externos
à Máquina Virtual Java (Java Virtual Machine - JVM) corrente em JVM de
outras máquinas. RMI provê um serviço de nomeação para localizar servidores
de objetos. Um cliente adquire um objeto referência para um servidor de
objetos fazendo busca por uma referência de servidor de objetos, a partir daı́
ele pode invocar métodos sobre o servidor de objetos como se ele reside-se no
espaço de endereçamento do cliente. Esta tecnologia conta com a capacidade
do Java converter objetos num fluxo de dados e transmiti-lo. Então, ambos
servidor e cliente de objetos são escritos em Java. Java RMI pode ser usado
sobre qualquer plataforma com uma implementação JVM;
EJB. A especificação Enterprise Java Bean’s (EJB) define uma arquitetura para
o desenvolvimento e posicionamento estratégico de servidor secundário (de
apoio), componentes de software transacionais e distribuı́dos. Estes componentes chamados enterprise beans são objetos distribuı́dos que estão hospedados num recipiente EJB (EJB container) e provêm serviços remotos a clientes
distribuı́dos por toda uma rede. O recipiente (container) cuida de tarefas de
gerenciamentos complexos tais como: segurança, transações, persistência, concorrência e gerenciamento de recursos. No EJB, o recipiente, não a classe bean,
implementa a estrutura para as interfaces remota e local. Isto é para assegurar que todo método invocado sobre este tipo de referência por uma aplicação
cliente é primeiro tratado pelo recipiente e então delegado à instância bean.
O recipiente precisa interceptar estas requisições cuja intenção seja em relação
67
Capı́tulo 2. Métodos e Materiais
ao bean, de forma que ele pode aplicar persistência, transação e controle de
acesso automaticamente. Os servidores EJB precisam suportar ou o Java
Remote Method Protocol (JRMP) ou CORBA’s Internet Inter-ORB Protocol
(IIOP). O bean e o programador de aplicação somente enxergam a classe bean
e sua interface remota; os detalhes de comunicação da rede são escondidos.
Organizações podem construir seus próprios componentes ou comprá-los de
terceiros;
Computação Distribuı́da através da Internet. Organizações que requerem poder computacional intensivo, mas que não desejam investir nos equipamentos necessários, podem fazer uso de computadores de mesa pouco usados ou
fora de linha dentro de suas organizações ou mesmo computadores externos
conectados na Internet. Devido à largura de banda da Internet ser muito
limitada, esta estratégia somente trabalha para os assim chamados problemas “embaraçosamente paralelos”, isto é, problemas que podem ser divididos
em pequenos problemas altamente independentes. Muitos projetos avançados
usam a computação distribuı́da na Internet obtendo seu poder de processamento através de voluntários. Outros oferecem incentivos tais como: listas de
classificação, apostas em corridas de cavalos (sweepstakes) ou mesmo pequenos
pagamentos. Participantes são tipicamente requeridos para baixarem e instalarem um programa que então executa despercebidamente (sem atrapalhar)
em segundo plano (background), como por exemplo um protetor de tela. O
programa então baixa automaticamente e processa pequenas unidades de trabalho até que seja interrompido pelo usuário, e o ponto em que a unidade de
trabalho está em processamento, se possı́vel, é gravado ou então descartado.
68
Capı́tulo 2. Métodos e Materiais
2.3.2
AG no Ambiente Distribuı́do
Na implementação do AG paralelo [65] é necessário utilizar múltiplos processos,
onde cada um é alocado em um processador distinto, além troca de informações entre
eles. Assim, há uma necessidade de um método pelo qual se possa transferir dados
entre estes processos. A Interface de Passagem (ou troca) de Mensagem (Messaging
Passing Interface - MPI) e a Máquina Paralela Virtual (Parallel Virtual Machine PVM [11]) [8, 9, 10] provêm um meio de transferir estes dados entre os processos 3 .
MPI e PVM são especificações de bibliotecas de comunicação (passagem/troca de
mensagem) que podem escrever programas paralelos portáveis, deixando o funcionamento interno do protocolo de comunicação transparente ao código de chamada.
A biblioteca MPI foi escolhida para o desenvolvimento deste trabalho. Não
houve um estudo comparativo entre MPI e PVM quanto ao desempenho do AG
paralelo, pois ambas bibliotecas (MPI e PVM) são portáveis e executam arquivos
binários diferentes num sistema paralelo, no caso de programas MIMD (Multiple
Instruction Stream, Multiple Data Stream) [1]. Enquanto o MPI cria e conecta os
processos, o PVM necessariamente precisa de um daemon (provedor de serviços)
para cada usuário e em cada máquina para criar e manter a comunicação entre
os processos. Outras diferenças entre MPI e PVM podem ser encontradas nas referências [8, 9, 10].
O MOSIX (Multicomputer Operating System for Unix) [12, 13] por sua vez faz
o balanceamento de carga. Com ele, o sistema gerencia um conjunto de máquinas
como se fossem uma só, operando de maneira transparente ao usuário. Se um
programa é executado numa máquina gerenciada pelo MOSIX e houver a necessidade
de um maior processamento, o MOSIX calcula os custos de comunicação e recursos
de cada máquina do cluster (conjunto de computadores interligados) e a partir daı́
transfere parte do processamento para a máquina mais apta. O MPI e o MOSIX
podem trabalhar juntos para melhorar o desempenho do cluster.
A transferência de dados usando a MPI é feita através de uma chamada de
3
DCE (Distributed Computing Enviroment): também é uma opção para processamento dis-
tribuı́do [14]
69
Capı́tulo 2. Métodos e Materiais
função da biblioteca. Além da comunicação ponto-a-ponto, a MPI suporta comunicação coletiva e em grupos. Isto permite uma redução no envio elevado de
informações a um grupo (broadcast) e no recebimento de um grupo (gather) de
processos [6]. Esta idéia é ilustrada na Figura 2.18 4 .
MPI é, portanto, uma biblioteca para transmissão de dados num ambiente
de memória distribuı́da, máquinas paralelas massivas, rede de estações (Network of
Workstation - NOWs) e redes heterogêneas [3] além de suporte para máquinas com
processamento simétrico (Symetric MultiProcessing - SMP). MPI possui mais de
120 procedimentos e funções onde apenas 6 são suficientes para resolver a maioria
dos problemas existentes atualmente [4]. No presente trabalho foram utilizados
apenas estes seis procedimentos/funções, mais duas variantes e outras duas funções.
Estes procedimentos são MPI Init, MPI Comm size, MPI Comm rank, MPI Send,
MPI Rec, MPI Irecv, MPI Isend, MPI Wait, MPI Test, MPI Finalize. A versão
MPI 1.2.6 utilizada assume que todos os processos estão estaticamente alocados,
ou seja, o número de processos é configurado no inı́cio do programa em execução e
nenhum processo adicional é criado durante a execução. A cada processo é atribuı́do
um único inteiro (integer rank) na faixa de 0, 1, ..., p − 1, onde p é o número de
processos.
Processo 0
Processo 1
Processo 2
Processo p − 1
...
Mestre
Escravo 1
Escravo 2
Escravo p − 1
...
Figura 2.18: Esquema de processos MPI.
Como a biblioteca MPI é multiplataforma, a portabilidade de um programa
paralelo para outro sistema operacional não requer nenhuma mudança nas chamadas
de comunicação. Os desenvolvedores da biblioteca MPI tiveram o cuidado com os
detalhes de hardware, deixando por conta do programador apenas a preocupação
com a implementação do programa. Esta complexidade embarcada numa biblioteca
permite ao MPI transcender plataformas.
4
A topologia é definida pelo programador e esta em particular foi adotada neste trabalho.
70
Capı́tulo 2. Métodos e Materiais
2.3.3
Aproximação AG Paralela
AG paralelo global possui um mestre e seis escravos. O mestre envia 100
cromossomos para cada escravo fazer a recombinação, mutação e calcular o valor
da função de aptidão. Após isto, cada escravo envia os novos cromossomos gerados
(50) para o mestre que escolhe os primeiros 600 melhores alinhamentos par-a-par
(valor de aptidão). As Figuras 2.19,2.20,2.21,2.22 e 2.23 ilustram esta aproximação.
Figura 2.19: Fluxograma da aproximação AG paralelo - processo mestre.
71
Capı́tulo 2. Métodos e Materiais
Figura 2.20: Fluxograma da aproximação AG paralelo - processo escravo.
72
Capı́tulo 2. Métodos e Materiais
Algoritmo Genético ( . . . ) {
// iniciando MPI
MPI Inicia();
// iniciando as variáveis
t ← 0;
P ← Objeto Populaç~
ao(...);
P.inicia populacao(...);
terminado ← falso;
// envia informaç~
oes de controle a cada processo escravo
ametros de configuraç~
ao...);
MPI Envia(...par^
// calcula o fitness da populaç~
ao inicial
P.calc fitness();
// Ciclo evolutivo
enquanto n~
ao terminado faça
// envia uma sub-populaç~
ao a cada processo escravo
para i ← 1 até No Escravos faça
¯
// divide a populaç~
ao e envia
subpopul ← P.subpopul(No Escravos,i);
¯
MPI Envia(...subpopul...);
fim para;
// recebe uma sub-populaç~
ao de cada processo escravo
para i ← 1 até No Escravos faça
¯
MPI Recebe(...subpopul...);
// acrescenta os novos na populaç~
ao atual
P.adicione(subpopul);
fim para;
// seleciona os sobreviventes através do fitness
P.sobreviventes();
// incrementa o contador
t ← t + 1;
// verifica término
terminado ← (t = número ciclos máximos) ou
(P.melhor fitness() >= fitness máximo);
MPI Envia(...terminado...);
fim enquanto;
// terminando MPI
MPI Termina();
}
Figura 2.21: Algoritmo da aproximação AG paralelo - processo mestre.
73
Capı́tulo 2. Métodos e Materiais
Algoritmo Genético ( . . . ) {
// iniciando MPI
MPI Inicia();
// recebe informaç~
oes de controle do processo mestre e inicia variáveis
t ← 0;
terminado ← falso;
MPI Recebe(...par^
ametros de configuraç~
ao...);
P ← Objeto Populaç~
ao(...);
Pt ← Objeto Populaç~
ao(...);
// Ciclo evolutivo
enquanto n~
ao terminado faça
// recebe uma sub-populaç~
ao do processo mestre
MPI Recebe(...subpopul...);
P.inicia populacao(..subpopul...);
// n~
ao precisa calcular o fitness da populaç~
ao inicial, o servidor envia
// reinicia variáveis auxiliares
Pt.inicia populacao();
j ← 0;
// Gera 50% de indivı́duos
para i ← 0 até P.tamanhoPopulacao() passo 4 faça
// seleciona uma sub-populaç~
ao
P’(j) ← P.selecionaPais();
// recombina os "genes" dos pais selecionados
P’(j).recombina();
// perturbar a populaç~
ao
P’(j).muta();
// calcula os novos fitness
P’(j).calc fitness();
// acrescenta os novos numa populaç~
ao temporária
Pt.adicione(P’(j));
// incrementa o contador
j ← j + 1;
fim para;
// acrescenta os novos na populaç~
ao atual
P.adicione(Pt);
// seleciona os sobreviventes através do fitness
P.sobreviventes();
// envia a populaç~
ao e os fitness ao processo mestre
MPI Envia(...subpopul...);
// incrementa o contador
t ← t + 1;
// verifica término
MPI Recebe(...terminado...);
fim enquanto;
// terminando MPI
MPI Termina();
}
Figura 2.22: Algoritmo da aproximação AG paralelo - processo escravo.
74
Capı́tulo 2. Métodos e Materiais
Figura 2.23: Funcionamento do AG Paralelo.
.........
Fluxo de dados Mestre → Escravo
.........
Fluxo de dados Escravo → Mestre
———–
Fluxo de controle Mestre → Escravo
75
Capı́tulo 2. Métodos e Materiais
2.3.4
Dados Utilizados no AG Paralelo
As seqüências utilizadas na simulação do AG serial são as mesmas para o
AG paralelo. Para facilitar a leitura a Tabela 2.2 será mostrada novamente na
Tabela 2.3.
Tabela 2.3: Seqüências utilizadas nas simulações
Código da Proteı́na Descrição
Qtd.Nucleot.
NCBI
SEQex1
Seqüencia de teste 1
30
Não
SEQex2
Seqüencia de teste 2
21
Não
P69905
Hemoglobin Alpha Chain
138
Sim
P68871
Hemoglobin Beta Chain
135
Sim
P02185
Myoglobin
459
Sim
SMHY1C
Metallothionein I - Chinese hamster
183
Sim
SMRT1
Metallothionein I - Rat
183
Sim
O tamanho da população é constante (durante as gerações) com 600 indivı́duos
no total, sendo 100 indivı́duos para cada um dos 6 processos que executam a evolução
da população. A taxa de cruzamento foi fixada em pc = 50%. Cada processo executa
100 ciclos evolutivos antes de devolver o produto da evolução da população ou antes
da imigração/emigração. Cada indivı́duo da população possui um fitness exclusivo
e aleatório. A população inicial relativa a cada alinhamento estudado foi sempre a
mesma. A condição de parada foi pré-estabalecida para 100, o que dá um tempo
razoável a para convergência do alinhamento ótimo.
76
Capı́tulo 3
Resultados
Antes de analisarmos os resultados obtidos pelos algoritmos serial e paralelo,
abordaremos alguns pontos relativos ao desempenho. Depois mostraremos os resultados obtidos pela aplicação dos algoritmos nas seqüências (conforme Tabelas 2.2 e
2.3) sem esquecermos dos parâmetros de execução como, por exemplo, probabilidade
de mutação e cruzamento.
77
Capı́tulo 3. Resultados
3.1
Análise de Desempenho do AG Serial Proposto
Nesta análise, consideraremos o tempo despendido pelo algoritmo nas diferen-
tes versões, RE (com reestruturação dos alinhamentos) e NRE (sem reestruturação
dos alinhamentos), para convergir ao valor máximo do alinhamento calculado através
do modelo de pontuação (Matriz de Pontuação, Seção 1.2.3).
As seqüências analisadas foram: SEQex1 com SEQex2 e P69905 com P68871.
Estas seqüências foram selecionadas porque as duas primeiras são menores e as duas
seguintes maiores. Também foi analisado o tempo de manipulação das instâncias
dos objetos comparado com o tempo de processamento total. Os resultados são
mostrados nas subseções à seguir.
78
Capı́tulo 3. Resultados
3.1.1
Análise de Desempenho: Seqüencias SEQex1 e SEQex2
A Tabela 3.1 contém a média dos tempos das Figuras 3.1-3.4 por probabilidade
de mutação. Todas as simulações convergiram. Observe que o valor que está em
negrito na Tabela 3.1 é a menor média de tempo gasto para os algoritmos obterem
o melhor alinhamento. Comparando-se a menor média do algoritmo NRE (sem
reestruturação dos alinhamentos) que está em 80% com a média do algoritmo com
RE (com reestruturação) que está em 80% (note que não é a menor média do
algoritmo com RE), obteremos:
Desempenho =
0.476N RE
100 = 192.71%
0.247RE
(3.1)
onde o valor 192.71% representa o quanto o algoritmo AG serial RE foi melhor
em relação ao AG serial NRE.
Tabela 3.1: Tempo médio de processamento (Figuras 3.1-3.4) por probabilidade de
mutação.
Prob. Mutação
Tempo (s)
Prob. Mutação
Tempo
0.25%
0.476
50%
0.366
1%
0.712
60%
0.350
10%
0.525
70%
0.372
20%
0.395
80%
0.315
30%
0.494
90%
0.336
40%
0.366
10%
0.398
79
Capı́tulo 3. Resultados
Figura 3.1: Desempenho do AG Serial sem RE (NRE) por probabilidade de mutação.
Figura 3.2: Desempenho do AG Serial com RE apenas uma vez.
80
Capı́tulo 3. Resultados
Figura 3.3: Desempenho do AG Serial com RE a cada 10 gerações.
Figura 3.4: Desempenho do AG Serial com RE.
81
Capı́tulo 3. Resultados
3.1.2
Análise de Desempenho: Seqüencias P69905 e P68871
A Tabela 3.2 contém a média dos tempos das Figuras 3.5-3.6 por probabilidade de mutação. As versões do algoritmo NRE e 1RE para as seqüências P69905
e P68871 não convergiram antes de 1000 gerações, portanto, seus resultados foram
desprezados. Já os ı́ndices de convergência para as demais simulações são mostrados
nas Figuras 3.7 e 3.8. Observe que o valor que está em negrito na Tabela 3.2 é a
menor média de tempo gasto para os algoritmos obterem o melhor alinhamento.
Comparando-se a menor média do algoritmo g10RE (reestruturação dos alinhamentos a cada 10 gerações) que está em 10% com a média do algoritmo com RE que
está em 10% (note que não é a menor média do algoritmo com RE), obteremos:
Desempenho =
2.318g10RE
100 = 211.54
1.096RE
(3.2)
onde o valor 211.54% representa o quanto o algoritmo AG serial RE foi melhor
em relação ao AG serial g10RE.
Tabela 3.2: Tempo médio de processamento (Figuras 3.5-3.6) por probabilidade de
mutação.
Prob. Mutação
Tempo (s)
Prob. Mutação
Tempo
0.25%
1.868
50%
2.387
1%
1.877
60%
2.464
10%
1.707
70%
2.724
20%
2.374
80%
3.122
30%
2.103
90%
3.155
40%
2.107
10%
2.989
82
Capı́tulo 3. Resultados
Figura 3.5: Desempenho do AG Serial com RE a cada 10 gerações.
Figura 3.6: Desempenho do AG Serial com RE.
83
Capı́tulo 3. Resultados
Figura 3.7: Índice de convergência do AG Serial com RE a cada 10 gerações.
Figura 3.8: Índice de convergência do AG Serial com RE.
84
Capı́tulo 3. Resultados
3.1.3
Tempo de Manipulação de Instâncias de Objetos versus Tempo de Processamento
As Figuras 3.9 e 3.10 mostram uma estimativa do tempo gasto com a manipulação de estruturas de dados (construtor e destrutor de objetos) durante a
execução do algoritmo (1000 ciclos evolutivos). Conclui-se facilmente que é possı́vel
melhorar o desempenho do algoritmo evitando a instanciação dinâmica dos objetos
(alocação dinâmica de memória). Assim, é necessário reimplementar todo o algoritmo para que no inı́cio de sua execução seja alocado toda a memória necessária.
Só para se ter uma idéia do problema, em média são instanciados, a cada ciclo evolutivo, 7.698 novos objetos.
Figura 3.9: Tempo de Processamento x (RE e NRE com 50% e 100% de probabilidade de mutação). Seqüências: SEQex1 e SEQex2.
85
Capı́tulo 3. Resultados
Figura 3.10: Tempo de Processamento x (RE e NRE com 50% e 100% de probabilidade de mutação). Seqüências: P69905 e P68871.
86
Capı́tulo 3. Resultados
3.2
Comparação dos Resultados do AG Serial
Proposto com o Algoritmo de Needleman e
Wunsch
Para que possamos avaliar a eficiência do AG serial, compararemos o tempo
gasto pelos algoritmos: clássico (Needleman e Wunsch) e AG serial RE, para alinhar
as seqüências da Tabela 2.2. O algoritmo clássico foi escrito na linguagem Java e
obtido na internet no endereço mostrado na referência [36]. A escolha do AG serial
RE foi devida ao melhor desempenho, além disso, a versão original do algoritmo
(AG serial NRE) tinha um ı́ndice de convergência muito abaixo do AG serial RE.
Os resultados obtidos são mostrados nas Tabelas 3.3 e 3.4.
Tabela 3.3: Resultados obtidos pelo algoritmo clássico de Needleman e Wunsch, e
o algoritmo genético. O algoritmo clássico não realiza E/S (entrada/saı́da) de dispositivo, enquanto que o AG serial RE faz E/S.
Seqüências
T1 (s)
T2 (s)
Tx
Observação
SEQex1 e SEQex2
0,0016
0,2900
181.25
convergência: 100%
P69905 e P68871
0.0004
1,9640
4910.00
população1 , convergência: 32%
P69905 e P68871
0.0004
1,7614
4403.50
população2 , convergência: 46%
SMHY1C e SMRT1
0,0096
5,4467
567.36
população1 , convergência: 100%
SMHY1C e SMRT1
0,0096
0,0303
3.15
população2 , convergência: 100%
P02185 e P69905
0,0026
1,9390
745.77
população1 , convergência: 100%
P02185 e P69905
0,0026
0,0225
8.65
população2 , convergência: 100%
P02185 e P68871
0,0310
1,9390
62.55
população1 , convergência: 100%
P02185 e P68871
0,0310
0,0225
0.73
população2 , convergência: 100%
T1 : tempo médio (em segundos) de processamento do algoritmo clássico;
T2 : tempo médio (em segundos) de processamento do AG serial RE;
Tx : (Tx = T2 /T1 ) quantas vezes o algoritmo clássico é mais rápido que o
AG Serial RE.
As Figuras 3.11-3.19 mostram a evolução das populações das seqüências da
87
Capı́tulo 3. Resultados
Tabela 3.4: Resultados obtidos pelo algoritmo clássico de Needleman e Wunsch, e o
algoritmo genético. O algoritmo clássico realiza E/S (entrada/saı́da)
de dispositivo, enquanto que o AG serial RE faz E/S.
Seqüências
T1 (s)
T2 (s)
Tx
Observação
SEQex1 e SEQex2
0,0269
0,2900
10.78
convergência: 100%
P69905 e P68871
3.4365
1,9640
0.57
populacao1 , convergência: 32%
P69905 e P68871
3.4365
1,7614
0.51
populacao2 , convergência: 46%
SMHY1C e SMRT1
13,058
5,4467
0.42
populacao1 , convergência: 100%
SMHY1C e SMRT1
13,058
0,0303
0.002
populacao2 , convergência: 100%
P02185 e P69905
4,0968
1,9390
0.47
populacao1 , convergência: 100%
P02185 e P69905
4,0968
0,0225
0.005
populacao2 , convergência: 100%
P02185 e P68871
4,7436
1,9390
0.41
populacao1 , convergência: 100%
P02185 e P68871
4,7436
0,0225
0.005
populacao2 , convergência: 100%
T1 : tempo médio (em segundos) de processamento do algoritmo clássico;
T2 : tempo médio (em segundos) de processamento do AG serial RE;
Tx : (Tx = T2 /T1 ) quantas vezes o algoritmo clássico é mais rápido que o
AG Serial RE.
88
Capı́tulo 3. Resultados
Tabela 3.3.
Os tempos do algoritmo clássico (Java com E/S), descritos na Tabela 3.4,
foram obtidos no ambiente Linux, porém no Windows os tempos são bem menores e
próximo aos da Tabela 3.3. Observe que agora o tempo gasto pelo algoritmo clássico
é muito maior (Tabela 3.4), o que nos leva a pensar que o problema pode estar no
plug-in do Java para Linux. Entretanto, não podemos desconsiderar a E/S feita
pelo algoritmo AG serial RE.
Figura 3.11: Fitness máximo (normalizado) no processo evolutivo das seqüências:
SEQex1 e SEQex2.
89
Capı́tulo 3. Resultados
Figura 3.12: Fitness máximo (normalizado) no processo evolutivo das seqüências:
P69905 e P68871 (populacao1 ).
Figura 3.13: Fitness máximo (normalizado) no processo evolutivo das seqüências:
P69905 e P68871 (populacao2 ).
90
Capı́tulo 3. Resultados
Figura 3.14: Fitness máximo (normalizado) no processo evolutivo das seqüências:
SMHY1C e SMRT1 (populacao1 ).
Figura 3.15: Fitness máximo (normalizado) no processo evolutivo das seqüências:
SMHY1C e SMRT1 (populacao2 ).
91
Capı́tulo 3. Resultados
Figura 3.16: Fitness máximo (normalizado) no processo evolutivo das seqüências:
P02185 e P69905 (populacao1 ).
Figura 3.17: Fitness máximo (normalizado) no processo evolutivo das seqüências:
P02185 e P69905 (populacao2 ).
92
Capı́tulo 3. Resultados
Figura 3.18: Fitness máximo (normalizado) no processo evolutivo das seqüências:
P02185 e P68871 (populacao1 ).
Figura 3.19: Fitness máximo (normalizado) no processo evolutivo das seqüências:
P02185 e P68871 (populacao2 ).
93
Capı́tulo 3. Resultados
3.3
Comparação dos Resultados do AG Paralelo
Proposto com o Algoritmo de Needleman e
Wunsch
A seguir, compararemos o tempo gasto pelos algoritmos clássico (Needleman
e Wunsch) e o AG paralelo RE para alinhar as seqüências da Tabela 2.3 (idêntica
à Tabela 2.2), a fim de avaliar a eficiência do AG paralelo. O AG paralelo RE
converge mais rápido e eficientemente em relação à sua versão original do algoritmo
(AG paralelo NRE) o qual tinha um ı́ndice de convergência muito abaixo do AG
paralelo RE. Os resultados obtidos são mostrados nas Tabelas 3.5 e 3.6.
Tabela 3.5: Resultados obtidos pelo algoritmo clássico de Needleman e Wunsch, e o
algoritmo genético proposto. O algoritmo clássico não realiza E/S
(entrada/saı́da) de dispositivo, enquanto que o AG serial RE faz E/S.
Seqüências
T1 (s)
T2 (s)
Tx
Observação
SEQex1 e SEQex2
0,0016
3.6051
2253
convergência: 100%
P69905 e P68871
0.0004
24.336
60840
populacao1 , convergência: 20%
P69905 e P68871
0.0004
20.469
51172
populacao2 , convergência: 30%
SMHY1C e SMRT1
0,0096
53.319
5554
populacao1 , convergência: 100%
SMHY1C e SMRT1
0,0096
1.3936
P02185 e P69905
0,0026
24.404
P02185 e P69905
0,0026
1.2662
487 populacao2 , convergência: 100%
P02185 e P68871
0,0310
22.221
716 populacao1 , convergência: 50%
P02185 e P68871
0,0310
19.144
617 populacao2 , convergência: 60%
145 populacao2 , convergência: 100%
9386
populacao1 , convergência: 100%
T1 : tempo médio de processamento do algoritmo clássico;
T2 : tempo médio de processamento do AG paralelo RE;
Tx : (Tx = T2 /T1 ) quantas vezes o algoritmo clássico é mais rápido que o
AG Paralelo RE.
As Figuras 3.20-3.28 mostram a evolução das populações das seqüências da
Tabela 3.5.
94
Capı́tulo 3. Resultados
Tabela 3.6: Resultados obtidos pelo algoritmo clássico de Needleman e Wunsch, e o
algoritmo genético. O algoritmo clássico realiza E/S (entrada/saı́da)
de dispositivo, enquanto que o AG serial RE faz E/S.
Seqüências
T1 (s)
T2 (s)
Tx
Observação
SEQex1 e SEQex2
0,0269
3.6051
134.02
convergência: 100%
P69905 e P68871
3.4365
24.336
7.08
populacao1 , convergência: 20%
P69905 e P68871
3.4365
20.469
5.96
populacao2 , convergência: 30%
SMHY1C e SMRT1
13,058
53.319
4.08
populacao1 , convergência: 100%
SMHY1C e SMRT1
13,058
1.3936
0.10
populacao2 , convergência: 100%
P02185 e P69905
4,0968
24.404
5,96
populacao1 , convergência: 100%
P02185 e P69905
4,0968
1.2662
0.31
populacao2 , convergência: 100%
P02185 e P68871
4,7436
22.221
4.68
populacao1 , convergência: 100%
P02185 e P68871
4,7436
19.144
4.04
populacao2 , convergência: 100%
T1 : tempo médio de processamento do algoritmo clássico;
T2 : tempo médio de processamento do AG paralelo RE;
Tx : (Tx = T2 /T1 ) quantas vezes o algoritmo clássico é mais rápido que o
AG Paralelo RE.
Figura 3.20: Fitness máximo (normalizado) no processo evolutivo das seqüências:
SEQex1 e SEQex2.
95
Capı́tulo 3. Resultados
Figura 3.21: Fitness máximo (normalizado) no processo evolutivo das seqüências:
P69905 e P68871 (populacao1 ).
Figura 3.22: Fitness máximo (normalizado) no processo evolutivo das seqüências:
P69905 e P68871 (populacao2 ).
96
Capı́tulo 3. Resultados
Figura 3.23: Fitness máximo (normalizado) no processo evolutivo das seqüências:
SMHY1C e SMRT1 (populacao1 ).
Figura 3.24: Fitness máximo (normalizado) no processo evolutivo das seqüências:
SMHY1C e SMRT1 (populacao2 ).
97
Capı́tulo 3. Resultados
Figura 3.25: Fitness máximo (normalizado) no processo evolutivo das seqüências:
P02185 e P69905 (populacao1 ).
Figura 3.26: Fitness máximo (normalizado) no processo evolutivo das seqüências:
P02185 e P69905 (populacao2 ).
98
Capı́tulo 3. Resultados
Figura 3.27: Fitness máximo (normalizado) no processo evolutivo das seqüências:
P02185 e P68871 (populacao1 ).
Figura 3.28: Fitness máximo (normalizado) no processo evolutivo das seqüências:
P02185 e P68871 (populacao2 ).
99
Capı́tulo 4
Conclusão
O trabalho mostra que o método alternativo baseado na técnica do Algoritmo
Genético (AG) [29] encontra com boa eficiência o alinhamento ótimo entre duas
seqüências de nucleotı́deos. Já o AG paralelo ainda não mostrou resultados satisfatórios.
O algoritmo também pode encontrar mais de um alinhamento ótimo, caso
exista. Dessa forma, quando o biologista alinha duas ou mais seqüências, ele estará
poupando tempo em suas análises.
4.1
Conclusão dos Resultados do AG Serial
A partir dos resultados mostrados na seção 3.2, verificamos que o algoritmo AG
serial converge eficientemente para soluções ótimas, mas o algoritmo clássico ainda
é mais eficiente. Note que é possı́vel encontrar mais do que um alinhamento ótimo,
e isto depende das seqüências analisadas, da população inicial e das probabilidades
de cruzamento e mutação.
É possı́vel melhorar o desempenho do algoritmo evitando a instanciação dinâmica dos objetos (alocação dinâmica de memória). Assim, é necessário reimplementar
todo o algoritmo para que no inı́cio de sua execução seja alocado toda a memória
necessária.
100
Capı́tulo 4. Conclusão
Um dos problemas encontrados foi a conseqüente homogeneidade da população
que tornou a convergência lenta. Algumas técnicas foram estudadas para resolver
este problema, como:
• melhor controle da taxa de mutação;
• melhor controle do tamanho da população, isto é, custo versus benefı́cio;
• indivı́duos com fitness exclusivo (baseado no SAGA - seção 1.3.1);
• reestruturação dos alinhamentos (indivı́duos), movendo os gaps alinhados para
o final do alinhamento.
Com estas técnica o algoritmo aumentou a performance e o baixı́ssimo ı́ndice
de convergência que nos piores casos era em torno de 0% (até 1000 gerações) e agora
passou a 30%.
Outras técnicas podem ser aplicadas para melhorar ainda mais o desempenho
do algoritmo, como:
• aprimoramento do algoritmo acrescentando outros métodos heurı́sticos;
• otimização do código do algoritmo;
• 90% das amostras que não convergiram, chegaram a 95% do fitness máximo.
Portanto, o procedimento de mutação deve ser revisto e testado com outros
métodos.
101
Capı́tulo 4. Conclusão
4.2
Conclusão dos Resultados do AG Paralelo
Na seção 3.3 abordamos a aproximação AG paralelo com o intuito de diminuir
o tempo de convergência do alinhamento ótimo entre duas seqüências. Na seção 3.1
mostramos algumas otimizações possı́veis e lembramos do estudo e desenvolvimento
de novos métodos heurı́sticos. Uma análise de tempo de comunicação e processamento também é necessária. Foi utilizado o MRTG (Multi Router Traffic Grapher),
porém não foi possı́vel obter uma análise precisa do fluxo de dados.
Os resultados obtidos mostraram que mesmo o AG serial sendo eficiente, é
necessário ainda algumas modificações para melhorar sua eficiência. Conseqüentemente, melhorar a eficiência do AG paralelo.
102
Capı́tulo 4. Conclusão
4.3
Trabalhos Futuros
É possı́vel melhorar o desempenho do AG serial e do AG paralelo, através do
estudo da complexidade de algoritmo destas implementações para otimizar o código
e as estruturas de dados. O MOSIX, como comentado no capı́tulo 2, terá um papel
fundamental nesta otimização.
A latência da rede (custo x benefı́cio → comunicação x processamento no AG
paralelo) foi apenas estimada observando o fluxo de dados do servidor (utilizando
o tcpdump, nmap, netstat e mrtg; todos utilitários do Linux), isto porque os computadores estão interligados por um Switch. Um cálculo mais apurado estimará
melhor este fluxo para que seja obtida uma melhor eficiência do algoritmo.
Um trabalho interessante seria a aplicação do AG para resolver o multialinhamento (alinhamento de mais de duas seqüências de nucleotı́deos) serial e paralelo.
Outro trabalho envolvendo o alinhamento de seqüências maiores, poderia explorar o poder computacional dos Grids e da Computação Distribuı́da através da
Internet (CDI) para resolvê-lo. No caso da CDI, uma infinidade de outras aplicações
podem ser resolvidas da mesma forma, desde que os algoritmos possam ser interrompidos e continuados (gravando e restaurando seus estados de execução).
103
Referências Bibliográficas
[1] TANENBAUM, Andrew S. MODERN OPERATIONG SYSTEMS. New Jersey
- USA: Prentice Hall, 1992. ISBN: 0-13-588187-0.
[2] 2a ESCOLA REGIONAL DE ALTO DESEMPENHO - ERAD, 2002. São Le¯
opoldo - Porto Alegre. Anais.
Editores: Tiarajú A. Diverio, Gerson G.
H. Cavalheiro - SBC/Instituo de Informática da UFRGS/UNISINOS/ULBRA,
2002. 298p.
[3] PACHECO, Peter S. PARALLEL PROGRAMMING WITH MPI. San Francisco - USA: Morgan Maufmann. 1996. 418p. ISBN: 1558603395.
[4] ARGONNE, National Laboratory, MISSISSIPI, State University of. MPI Message Passing Interface - Documentation and Download. Argonne - Illinois
- USA. Disponı́vel na internet no endereço: http://www.mcs.anl.gov/mpi/ em
novembro/2004.
[5] CURLEY B.E., Bernadette. Dissertation: System Identification using Neural
Networks Optimised with Genetic Algorithms. Dublin City University, Ireland:
Scholl of Eletronic Engineering. August-2002.
[6] KARNIADAKIS, George Em; KIRBY II, Robert M. Parallel Scientific Computing in C++ and MPI. Cambridge University Press, 2003. 628p. ISBN:
0521520800.
[7] CUERVO, Carlos Hermán Vargs. Dissertação de Mestrado: Otimização do
Cálculo de Parâmetros no Processo de Ajuste de Históricos de Produção usando
PVM. Dpto. Eng. de Petróleo - FEM - Unicamp - São Paulo - SP. Março-1997.
104
REFERÊNCIAS BIBLIOGRÁFICAS
[8] GROPP, William; LUSK, Ewing. PVM and MPI Are Completely Different. Disponı́vel na internet no endereço: http://citeseer.ist.psu.edu/573977.html(1997)
em novembro/2004.
[9] GROPP, William; LUSK, Ewing. Goals Guiding Design: PVM and MPI. Disponı́vel na internet no endereço: http://citeseer.ist.psu.edu/568858.html(2002)
em novembro/2004.
[10] GROPP, William; LUSK, Ewing.
ferent?
Why Are PVM and MPI So Dif-
Argonne - Illinois - USA. Technical Report PREPRINT
ANL/MCS-P667-0697, Mathematics and Computer Science Division, Argonne National Laboratory, June 1997. Disponı́vel na internet no endereço:
http://citeseer.ist.psu.edu/gropp97why.html em novembro/2004.
[11] GEIST, Al; BEGUELIN, Adam; DONGARRA, Jack; JIANG, Weicheng;
MANCHEK, Robert; SUNDERAM, Vaidy. PVM - Parallel Virtual Machine: A
User’s Guide and Tutorial for Network Parallel Computing. London - England:
The MIT Press, Cambridge, Massachusetts. 1994. Disponı́vel na internet no endereço: http://www.netlib.org/pvm3/book/pvm-book.ps em novembro/2004.
[12] BARAK, Amnon; SHILOH, Amnon. MOSIX: Cluster Managment System.
1999-2004. Disponı́vel na internet no endereço: http://www.mosix.org/ em novembro/2004.
[13] BARAK, Amnon; LA’ADAN, Oren. The MOSIX Multicomputer Operating
System for High Performance Cluster Computing. journal Future Generation
Computer Systems, Vol: 13, No 4-5, 1998. 361-372p. Disponı́vel na internet no
¯
endereço: http://citeseer.ist.psu.edu/barak98mosix.html em novembro/2004.
[14] IBM; Hewlett-Packard; Entegrity; Penn State; Chalmers. The Open Group
Debuts Open Source Licensing of DCE Source Code. 1995-2005. Disponı́vel na
internet no endereço: http://www.opengroup.org/dce/ em março/2005.
[15] WATERMAN, M. S.; WHITEMAN, D. E. Estimation of probability densities
by empirical density functions. INT. J. MATH. EDUC. SCI. TECHNOL., 1978,
VOL. 9, NO. 2, 127-137p.
105
REFERÊNCIAS BIBLIOGRÁFICAS
[16] MARTZ Jr., H. F.; WATERMAN, M. S. A Bayesian Model for Determining
the Optimal Test Stress for a Single Test Unit. TECHNOMETRICS, VOL. 20,
No 2, MAY-1978.
¯
[17] SMITH, T.F.; WATERMAN, M.S.; FITCH, W.M. Comparative Biosequence
Metrics. Journal of Molecular Mubon. 1981.
[18] SMITH, Temple F.; WATERMAN, Michael S. Comparison of Biosequences.
Advances in Applied Mathematics 2, 1981. 482-489p.
[19] SMITH, Temple F.; WATERMAN, Michael S. Overlapping Genes and Information Theory. Journal of Theory Biology. 1981. 91,379-380.
[20] SMITH, Temple F.; WATERMAN, Michael S. Identification of Common Molecular Subsequences. Journal of Molecular Biology. 1981. 147, 195-197p.
[21] WATERMAN, Michael S. Sequence alignments in the neighborhood of the optimum with general application to dynamic programming. USA: Applied Mathematical Sciences - Proc. Natl. Acad. Sci. Vol. 80, May-1983. 3123-3124p.
[22] WATERMAN, Michael S. Frequencies of restriction sites. Nucleic Acids Research. Volume 11 No 24. 1983.
¯
[23] SMITH, Temple F.; WATERMAN, Michael S.; LIPMAN, D.J.; WILBUR, W.
J. On the statistical significance of nucleic acid similarities. Nucleic Acids
Research. Volume 12 No 1. 1984.
¯
[24] VEERASSAMY, Shalini; SMITH, Andrew; TILLIER, Elisabeth R. M. A Transition Probability Model For Amino Acid Substitutions From Blocks. Journal
Computational Biology. 2003. 997-1010p.
[25] APOSTOLICO, Alberto; GIANCARLO, Raffaele. Sequence Alignment in Molecular Biology. Journal of Computational Biology, 1998. 173-196p.
[26] PAPOULIS, Athanasios. Probability, Random Variables, and Stochastic Processes. 3a Singapore: Ed. McGraw-Hill Book Co. 1991. ISBN: 0-07-048477-5.
¯
106
REFERÊNCIAS BIBLIOGRÁFICAS
[27] WHEELER, David. Weight Matrices for Sequence Similarity Scoring. USA:
Houston - Texas, Baylor College of Medicine: Department of Cell Biology. Version 2. May-1996. e-mail: [email protected]. Disponı́vel na internet no endereço: http://www.techfak.uni-bielefeld.de/bcd/Curric/PrwAli/nodeD.html
em janeiro/2005.
[28] HUGHEY, Richard; KARPLUS, Kevin; KROGH, Anders. SAM: Sequence
Alignment and Modeling Software System. Disponı́vel na internet no endereço:
http://www.cse.ucsc.edu/research/compbio/sam.html em novembro/2004.
[29] R. the and S. Research and G. University and o Department and o Science and
H. in and n artificial and A. Arbor and T. University and M. Press. Report
of the Systems Analysis Research Group SYS: Report of the Systems
Analysis Research Group SYS–1/92, University of Dortmund, Department of
Computer Science. Holland, J. H. (1975). Adaptation in natural and artificial systems. Ann Arbor, MI: The University of Michigan Press. 1975. URL:
citeseer.ist.psu.edu/the75adaptation.html.
[30] KOZA, John; BENNETT III, Forrest H.; STIFFELMAN, Oscar.
lelization of Genetic Programming.
Paral-
Disponı́vel na internet no endereço:
http://www.genetic-programming.org/ em junho/2004.
[31] WOLFSON,
son.
Haim.
Disponı́vel
Biological
na
internet
no
Sequence
endereço:
gamba.math.tau.ac.il/Education/CS99b/class notes/class2.html
Comparihttp://pcem
ju-
nho/2004.
[32] MAN, K.F.; TANG, K.S.; KOWNG, S. Genetic Algorithms: concepts and
designs. London - Great Britain: Springer-Verlag, 1999. ISBN: 1852330724.
[33] DURBIN, Richard; EDDY, R.; KROGH, Anders; Mitchison, G. Biological
Sequence Analysis: Probabilistic Models of Proteins and Nucleic Acids. United
Kingdom: Cambridge University Press, 1998. ISBN: 0-521-62041-4.
[34] PEVSNER, Jonathan. Bioinformatics and Functional Genomics. USA: By
Wiley-Liss, 2003. ISBN: 0-471-21004-8.
107
REFERÊNCIAS BIBLIOGRÁFICAS
[35] BARKAN, David. A parallel implementation of the Needleman-Wunsch algorithm for global gapped pair-wise alignment. USA: The Consortium for Computing in Small Colleges - Journal of Computing Sciences in Colleges: Vol. 17
Issue 6 Pag.239-239, 2002.
[36] SESTOFT, PETER. Implementation of some algorithms for pairwise alignment from Durbin: Biological Sequence Analysis, CUP 1998, chapter 2. version 1.4. Department of Mathematics and Physics, Royal Veterinary and Agricultural University - Denmark. 20-04-2003. e-mail: [email protected]. Disponı́vel na internet no endereço: http://www.dina.kvl.dk/ sestoft/bsa.html em
março/2005.
[37] BOICULESE L. Genetic algorithm in the control optimization. Rev Med Chir
Soc Med Nat Iasi, 103:176-81, Jan-Jun-1999.
[38] SUMIDA, B.H.; HOUSTON, A.I.; McNAMARA, J.M.; HAMILTON W.D. Genetic algorithms and evolution. Journal Theory Biology, 7-nov-1990. 59-84p.
[39] MAHFOUD, S.W. Population sizing for sharing methods. Urbana - USA:
IlliGAL Report Nøo 94005, Departament of Computer Science - University of
Illinois at Urbana-Champaign, 1994.
[40] DeJONG, K.A.; SPEARS, W.M. An analysis of the interacting roles of population size and crossover in genetic algoritms. Berlin: Proc. First Workshop
Parallel Problem Solving from Nature, Springer Verlag-1990. 38-47.
[41] GREFENSTETTE, JJ. Optimization of control parameters for genetic algoritms. IEEE Trans Systems, Man, and Cybernetics, 1986. SMC-16(1), 122-128.
[42] GAREY, M.R.; Johnson, D.S. Computers and intractability: a guide to the
theory of NP-completeness. San Francisco - USA: Freeman, 1979.
[43] CANTÚ-PAZ, E. A summary of research on parallel genetic algorithms. Urbana - USA: Illigal Report No 95007 - Illinois Genetic Algorithms Laboratory
¯
- University of Illinois at Urbana-Champaign, 1995.
108
REFERÊNCIAS BIBLIOGRÁFICAS
[44] CHIPPERFIELD, A.J.; FLEMING, P.J. Parallel genetic algorithms: A survey.
United Kingdom: ACSE Research Report No 518 - University of Sheffield, 1994.
¯
[45] GOLDBERG, David E. Genetic Algorithms in search, optimization and machine learning. USA: Ed. Addison-Wesley, 1989. ISBN: 0201157675.
[46] DAVIES, R.; CLARKE, T. Parallel implementation of a genetic algorithm.
Control Engineering Practice. Elsevier Science Publisher. Vol. 3. 1995. 11-19p.
ISSN: 0967-0661.
[47] DODD, N.; MACFARLANE, D.; MARLAND, C. Optimization of Artificial
Neural Network Structure Using Genetic Techniques Implemented on Multiple
Transputers. Transputing ’91, 1991. 687-700p.
[48] BRAUN, H. On solving travelling salesman problems by genetic algorithms.
Berlim: Proc. First Workshop Parallel Problem Solving from Nature, Springer
Verlag, 1990. 129-133p.
[49] MUNETOME, M.; TAKAI, Y.; SATO, Y. An efficient migration scheme for
subpopulation-based asynchronously parallel genetic algorithms. Proc. 5th Int.
Conf. Genetic Algorithms, 1993. 649p.
[50] ANDERSON, E.J.; FERRIS. M.C. A genetic algorithm for the assembly line
balancing problem. USA: Technical Report TR 926, Computer Sciences Departament, University of Wisconsin-Madison, , 1990.
[51] BALUJA, S. Structure and performance of fine-grain parallelism in genetic
search. Proc. 5th Int. Conf. Genetic Algorithm. 1993.
[52] MANDERICK, B.; SPIESSENS, P. Fine-grained parallel genetic algorithms.
Proc. 3rd. Int. Conf. Genetic Algorithms. 1989. 428-433p.
[53] GORGES-SCHLEUTER, M. ASPARAGOS: An asynchronous parallel genetic
optimization strategy. Proc. 3rd Int. Conf. Genetic Algorithms. 1989. 422-427p.
109
REFERÊNCIAS BIBLIOGRÁFICAS
[54] MÜHLENBEIN, H. Parallel genetic algorithms, population genetics and combinatorial optimizaation. Parallelism, Learning, Evolution, Springer-Verlag. 1989.
398-406p.
[55] KRÖGER, B.; SCHWENDERLING, P.; VORNBERGER, O. Parallel genetic
packing on transputers. Parallel Genetic Algorithms: Theory and Applications,
Amsterdam: IOS Press. 1993. 151-185p.
[56] CANTÚ-PAZ, Erick. A Survey of Parallel Genetic Algorithms. Urbana - USA:
University of Illinois at Urbana-Champaign. 1997. Disponı́vel na internet em
http://tracer.lcc.uma.es/tws/cEA/documents/cant98.pdf
[57] HERRERA, Francisco; LOZANO, Manuel .
Coded Genetic Algorithms.
Gradual Distributed Real-
IEEE - Transactions on Evolutionary Com-
putation, Vol. 4, no 1, April-2000. Disponı́vel na internet no endereço:
¯
http://sci2s.ugr.es/docencia/doctobio/graduales.pdf em novembro/2004.
[58] MASTROLILLI, Monaldo; GAMBARDELLA, Luca Maria. Effective Neighborhood Functions for the Flexible Job Shop Problem. Lugano - Switzerland:
IDSIA - Istituto Dalle Molle di Studi sull’Intelligenza Artificiale. 31-Jan-2000.
[59] HOPPER, E.; TURTON, B. C. H. A Review of the Application of MetaHeuristic Algorithms to 2D Strip Packing Problems. USA: School of Engineering, Cardiff University - Artificial Intelligence Review, Vol. 16, 2001. 257-300p.
Disponı́vel na internet no endereço: http://www.inf.utfsm.cl/ mcriff/EA/evaspace-planning/ht01.pdf em novembro/2004.
[60] WEI, Zheng; LEONG, H. W. Enhanced Packing Algorithms for iPACK Progress
Report. Singapore: School of Computing, National University of Singapore. 31Mar-2002.
[61] TAMAKI, H.; NICHIKAWA, Y. A parallel genetic algorithm based on a neighborhood model and its application to job shop scheduling. Parallel Problem
Solving from Nature, Vol. 2, 1992. 573-582p.
110
REFERÊNCIAS BIBLIOGRÁFICAS
[62] SILVA, Paulo Eduardo M. da; SHINODA, Ailton Akira; MACIEL, Carlos
Dias. . Ribeirão Preto-SP: 1st International Conference on Bioinformatics
and Computational Biology. May 14th - 16th 2003. Disponı́vel na internet no
endereço: http://www.vision.ime.usp.br/ cesar/programa/pdf/27.pdf em novembro/2004.
[63] SILVA, Paulo Eduardo M. da; SHINODA, Ailton Akira; MACIEL, Carlos Dias.
Finding the Best Biological Pairwise Alignment Through Genetic Algorithm.
Revista Semina. Ciências exatas e tecnológicas. Londrina - PR: , v.25, 2004.
[64] SILVA, Paulo Eduardo M. da; SHINODA, Ailton Akira; MACIEL, Carlos Dias.
Finding the Best Biological Pair-wise Alignment Through Genetic and Parallel
Algorithm. Palhoça-SC-Brasil: I Workcomp UNISUL - Universidade do Sul de
Santa Catarina. (12-14)-Maio-2004.
[65] JAIN, Eric. Distributed computing in bioinformatics. Open Mind Journals
Limited - Applied Bioinformatics. 2002. 13-20p.
[66] LAMBERT, Christophe; CAMPENHOUT, Jean-Marc Van; DeBOLLE, Xavier;
DEPIEREUX, Eric. Review of Common Sequence Alignment Methods: Clues
to Enhance Reliability. Bentham Science Publishers: Current Genomics. 2003.
Vol. 4 - no 2. p131-146.
¯
[67] PERTSEMLIDIS, Alexander;
FONDON III, John W.
Tutorial Ha-
ving a BLAST with bioinformatics (and avoiding BLASTphemy)..
oMed Central Ltd:
Publicado
em:
Genome Biology 2001,
27-09-2001.
Disponı́vel
na
Bi-
2:reviews2002.1-2002.10.
internet
no
endereço:
http://genomebiology.com/2001/2/10/reviews/2002 em janeiro/2005.
[68] CHIAROMONTE, F.; YAP, V.B.; MILLER, W. Scoring Pairwise Genomic
Sequence Alignments. Singapore: Pac Symp Biocomput. 2002. p. 115-26. [PubMed - indexed for MEDLINE: 11928468].
[69] SNUSTAD, D. Peter; SIMMONS, Michael J. Principles of Genetics. 2a Ed.
¯
USA: John Wiley & Sons Inc. 2000. ISBN: 0-471-29800-X.
111
REFERÊNCIAS BIBLIOGRÁFICAS
[70] U.S. GOVERNMENT: National Library of Medicine. National Center for Biotechnology Information. U.S. National Library of Medicine, 8600 Rockville
Pike, Bethesda, MD 20894. http://www.ncbi.nlm.nih.gov/ em janeiro/2005.
[71] ZAHA, Arnaldo. Biologia Molecular Básica. 2a Edição. Porto Alegre - Brasil:
¯
Editora Marcado Aberto. 2000. ISBN: 85-280-0283-7.
[72] VOGEL, Friedrich; MOTULSKY, Arno G. Genética Humana - Tradução. Rio
de Janeiro - RJ - Brasil: Editora Guanabara Koogan S.A. 2000.
[73] WEAVER, Robert F.; HEDRICK, Philip W. Genetics. 3a Edição. Dubuque ¯
IA - USA: WCB (Wm. C. Brown) Publishers, Kerper Boulevard. 1997. ISBN:
0-697-16000-9.
[74] DARBRE, Philippa D. Basic Molecular Biology. 1a Edição. USA: John Wiley
¯
& Sons Inc. 1999. IBSN: 0-471-97705-5.
[75] PNAS (Proceedings of the National Academy of Sciences). Identification of
a new malaria susceptibility locus (Char4) in recombinant congenic strains
of mice.
Disponı́vel na internet no endereço:
http://www.pnas.org em
agosto/2004.
[76] POWELL, Jeffrey R.; MORIYAMA, Etsuko N. Colloquium Paper: Evolution
of codon usage bias in Drosophila. Proc. Natl. Acad. Sci. USA, Vol. 94, July
1997. 7784-7790p.
[77] LARSSON, Jan; SVENSSON, Malin J.; STENBERG, Per; MÄKITALO, Maria. Painting of fourth in genus Drosophila suggests autosome-specific gene regulation. Published online before print as 10.1073/pnas.0400978101. Vol. 101.
2004. 9728-9733p.
[78] ÁVILA,
leculares
forme.
Mariana
das
B.
G.
de;
SOMA,
Hemoglobinopatias
Disponı́vel
na
internet
com
no
Mithitaka.
ênfase
na
endereço:
Bases
Anemia
moFalci-
http://www.puc-
campinas.edu.br/pesquisa/i semana cientifica/tcc resumos/63F1A5CF-BD824558-B49A-5ADDC6E8F.pdf em novembro/2004.
112
REFERÊNCIAS BIBLIOGRÁFICAS
[79] ALTSCHUL, S.F.; GISH , W.; MILLER, W.; MYERS, E.W.; LIPMAN, D.J.
Basic local alignment search tool. Journal of Molecular Biology, Vol. 215. 1990.
403-410p.
[80] PEARSON, W.R.; LIPMAN D.J. Improved tools for biological sequence comparison. Proc. Natl. Acad. Sci. USA, Vol. 85, 1988. 2444-2448p.
[81] NEEDLEMAN, S.B.; WUNSCH, C.D. A general method applicable to the search
for similarities in the amino acid sequence of two proteins. Journal of Molecular
Biology, Vol. 48. Mar-1970. 443-453p.
[82] SMITH, T.F.; WATERMAN, M.S.; FITCH W.M. Comparative biosequence
metrics. Journal of Molecular Evolution, Vol. 18. 1981. 38-46p.
[83] SMITH, T.F.; WATERMAN, M.S. Identification of common molecular subsequences. Journal of Molecular Biology, Vol. 25. Mar-1981. 147:195p-7.
[84] SMITH, T.F.; WATERMAN, M.S. Overlapping genes and information theory.
Journal of Theory Biology, Vol. 91. 21-Jul-1981. 379-380p.
[85] SMITH, T.F.; WATERMAN, M.S. Comparison of biosequences. Adv. Appl.
Math., Vol. 2. 1981. 482-489p.
[86] WATERMAN, M.S. Frequencies of restriction sites. Nucleic Acids Research,
Vol. 11. 1983. 8951-8956p.
[87] WATERMAN, M.S. Sequence alignments in the neighborhood of the optimum
with general application to dynamic programming. Proc. Natl. Acad. Sci - USA,
Vol. 80. l983. 3123-3124p.
[88] WATERMAN, M.S.; EGGERT, M. A new algorithm for best subsequence alignments with application to tRNA-rRNA comparisons Journal of Molecular Biology, Vol. 197. 20-Oct-1987. 723-728p.
[89] CHAO, K.M.; HARDISON, R.C.; MILLER W. Recent developments in linearspace alignment methods: a survey. Journal of Comput. Biology, Vol. 1. Winter1994. 271-291p.
113
REFERÊNCIAS BIBLIOGRÁFICAS
[90] NUSSINOV, R. Efficient algorithms for searching for exact repetition of nucleotide sequences. Journal of Molecular Evolution. Vol. 19(3-4). 1983. 283-285p.
[91] GOTOH, O. An improved algorithm for matching biological sequences. Journal
of Molecular Biology, Vol. 15;162(3). Dec-1982. 705-708p.
[92] LIPMAN, D.J.; WILBUR, W.J.; SMITH, T.F.; WATERMAN, M.S. On the
statistical significance of nucleic acid similarities. Nucleic Acids Research, Vol.
12. 1984. 215-226p.
[93] GIBSON TOBY; RAMU, CHENNA; GEMÜND, CHRISTINE. BIOCCELERATOR at EMBL: Bioccelerator Web server by Sequence Analysis Service.
Heidelberg, Germany: European Molecular Biology Laboratory. Disponı́vel na
internet no endereço: http://eta.embl-heidelberg.de:8000/misc/mat/ em fevereiro/2005.
[94] ALTSCHUL, S.F. Amino acid substitution matrices from an information theoretic perspective. Journal of Molecular Biology, Vol. 219. 1991. 555-565p.
[95] THOMSEN, RENÉ; FOGEL, GARY B.;
provement
of
Clustal-Derived
nary Algorithms.
gress
1507pp.
on
Piscataway,
Evolutionary
Disponı́vel
na
Sequence
Alignments
with
Im-
Evolutio-
NJ: Proceedings of the 2003 Con-
Computation,
internet
KRINK, THIEMO.
no
IEEE
endereço:
Press.
2003.
1499-
http://www.natural-
selection.com/Library/2003/03CEC Improvement Clustal.pdf
em
ja-
neiro/2005.
[96] PINTO, ADRIANO KIYOSHI OGATA; DELBEM, ALEXANDRE CLÁUDIO
BOTAZZO. MULTIALINHAMENTO DE SEQÜÊNCIAS BIOLÓGICAS UTILIZANDO ALGORITMOS GENÉTICOS. Instituto de Ciências Matemáticas
e de Computação - Universidade de São Paulo: IX Simpósio de Teses e
Dissertações. 19 e 20-novembro-2004. Disponı́vel resumo na internet no endereço: http://www.icmc.usp.br/ std2004/Resumos/akogata alexandre.pdf em
janeiro/2005.
114
REFERÊNCIAS BIBLIOGRÁFICAS
[97] CHOUDHURY, RAHUL. Application of Evolutionary Algorithms for Multiple
Sequence Alignment. Computational Molecular Biology. Biochemistry 218/
Medical Information Sciences 231. 2003. Disponı́vel na internet no endereço:
http://cmgm.stanford.edu/biochem218/Projects%202003/choudhury.pdf
em
janeiro/2005.
[98] ISHIKAWA, M.; TOYA, T.; TOKOTI, Y. Parallel Iterative Aligner with Genetic Algorithm. Cambery - France: Artificial Intelligence and Genome Workshop
- 13th International Conference on Artificial Intelligence. 1993. 13-22p.
[99] NOTREDAME, CÉDRIC; HIGGINS, DESMOND G. SAGA: Sequence Alignment by Genetic Algorithm. Oxford University Press: Nucleic Acids Research.
1996. Vol. 24. No 8. 1515-1524p.
¯
[100] NOTREDAME, CÉDRIC; O’BRIEN, EMMET A.; HIGGINS, DESMOND
G. RAGA: RNA Sequence Alignment by Genetic Algorithm. Oxford University
Press: Nucleic Acids Research. 1997. Vol. 25. No 22. 4570-4580p.
¯
[101] ZHANG, C.; WONG, A. K. A Genetic Algorithm for Multiple Molecular
Sequence Alignment. Comput. Appl. Biosci. 1997. Vol. 13. 565-581p.
[102] GONZALEZ, R. R. Multiple Protein Sequence Comparison by Genetic Algorithms. SPI-98. 1999.
[103] CAI, L.; JUEDES, D.; LIAKHOVITCH, E. Evolutionary Computation Techniques for Multiple Sequence Alignmente. Congress on Evolutionary Computation. 2000. 829-835p.
[104] CHELLAPILLA, K.; FOGEL, G. B. Multiple Sequence Alignment Using Evolutionary Programming. Congress on Evolutionary Computation. 1999. 445452p.
[105] RIAZ, TARIQ; WANG, YI; LI, KUO-BIN.
Multiple Sequence Alignment
Using Tabu Search. Dunedin, New Zealand. Australian Computer Society Publisher. Second Asia-Pacific Bioinformatics Conference (APBC). Vol. 29. 18
115
REFERÊNCIAS BIBLIOGRÁFICAS
to 22-January-2004. 223-232p. ISBN 1-920682-11-2. Disponı́vel na internet no
endereço: http://crpit.com/confpapers/CRPITV29Riaz.pdf em janeiro/2005.
[106] THOMSEN, RENÉ; BOOMSMA, WOUTER. Multiple Sequence Alignment
Using SAGA: Investigating the Effects of Operator Scheduling, Population Seeding, and Crossover Operators. Applications of Evolutionary Computing, EvoBIO - 2o European Workshop on Evolutionary Bioinformatics. 2004. 113-122p.
¯
[107] YOKOYAMA, TSUTOMU; WATANABE, TAKUMI; TANEDA, AKITO;
SHIMIZU, TOSHIO. A Web Server for Multiple Sequence Alignment Using
Genetic Algorithm. Genome Informatics Series No 12. 17-december-2001. 382¯
383p. ISBN: Paper: 4-946443-72-X.
[108] NGUYEN, HUNG DINH; YOSHIHARA, IKUO; YAMAMORI, KUNIHITO;
YASUNAGA, MORITOSHI. Aligning Multiple Protein Sequences by Parallel
Hybrid Genetic Algorithm. Genome Informatics Series No 13. 13-december¯
2002. 123-132p. ISBN: Paper: 4-946443-79-7.
[109] NOTREDAME, CÉDRIC. Recent progresses in multiple sequence alignment:
a survey. Technology Report: Pharmacogenomics. Ashley Publications Ltd.
2002. ISSN: 1462-2416.
[110] NOTREDAME, CÉDRIC.
Utilisation des Algorithmes Genetiques pour
L’analyse de Sequences Biologiques. Université Paul Sabatier - France: Doctorat en Bio-informatique. Directeur De Thèse: Prof. François Amalric. Février1998.
[111] CHOI,
JEONG-HYEON;
KIM, SUN.
ches.
CHOI,
KWANGMIN;
CHO,
HWAN-GUE;
Multiple Genome Alignment by Clustering Pairwise Mat-
University of Bologna Residential Center Bertinoro (Forlı̀) - Ber-
tinoro - Italy:
2o RECOMB Comparative Genomics Satellite Workshop
¯
(RCG’04). 16-19 October 2004. Disponı́vel na internet no endereço:
http://platcom.informatics.indiana.edu/platcom/workgroup/Kwangmin.Choi/
publication/rcg2004.pdf em fevereiro/2005.
116
REFERÊNCIAS BIBLIOGRÁFICAS
[112] PRESTWICH, STEVEN; HIGGINS, DES; O’SULLIVAN, ORLA. PseudoBoolean Multiple Sequence Alignment.
University College Cork. Tenth
Workshop on Automated Reasoning. 2003. Disponı́vel na internet no endereço:
http://4c.ucc.ie/web/upload/publications/inProc/arw03.pdf ou arw03.ps em
fevereiro/2005.
[113] LUQUE, GABRIEL; ALBA, ENRIQUE; KHURI, SAMI. Assembling DNA
Fragments with a Distributed Genetic Algorithm. Seminars: Algoritmos Bioinspirados y Biocomputación. Universidad de Granada - España. 9-december2004. Disponı́vel na internet no endereço:
http://neo.lcc.uma.es/radi-
aeb/docs/sem10-Dic-04/doc4-1.pdf
[114] ZHONG, WEIWEI. Using Traveling Salesman Problem Algorithms to Determine Multiple Sequence Alignment Orders. University of Georgia - USA: Master
of Science. 2003.
117
Download

Universidade Estadual de Londrina Alinhamento de