Sie sind auf Seite 1von 11

Exerccio Programa 4 Alinhamento Mltiplo de Sequncias Biolgicas

MAC2166 27 de maio de 2010

Introduo

O ltimo exerccio-programa do semestre ser baseado em uma rea de pesquisas bastante ativa e importante, que a biologia molecular computacional, em que tcnicas computacionais so utilizadas para o desenvolvimento de pesquisas em biologia molecular. Voc talvez observe que o enunciado do exerccio mais complexo que os anteriores e exige mais dedicao e ateno para entender o problema e o que pedido para ser resolvido. Isso proposital. Um dos objetivos didticos desse exerccio-programa mostrar, ainda que de forma um pouco simplicada, o tipo de problemas que, ao menos no contexto de pesquisas cientcas, requerem o uso de programas de computador para serem resolvidos, na forma como eles se apresentam para os pesquisadores e desenvolvedores de software. A soluo do EP, porm, no exige a compreenso de todos os fenmenos biolgicos relacionados com o problema.
2 Alinhamento mltiplo

Primeiramente, vamos rever alguns conceitos de biologia, que serviro de base para a formulao do exerccio proposto. Esses conceitos so apresentados para contextualizar o exerccio, e para voc ter uma ideia da relevncia potencial do programa desenvolvido. O exerccio propriamente dito est proposto nas prximas sees. Existem trs tipos principais de sequncias biolgicas: as sequncias de DNA,e as protenas. Cada elemento da sequncia de DNA um dos quatro nucleotdeos: A, C, T ou G. No casos das protenas, so 20 os possveis aminocidos que aparecem nas sequncias a formarem as protenas. Um alinhamento de sequncias de DNA, de RNA ou protenas de diferentes espcies de seres vivos descreve uma hiptese de evoluo entre os nucleotdeos ou aminocidos que constituem as sequncias biolgicas dos indivduos de cada espcie. Os alinhamentos so importantes para inferir a histria evolutiva das sequncias. Um alinhamento mltiplo,

envolvendo mltiplas sequncias, utilizado para extrair e representar similaridades biologicamente importantes de um conjunto de sequncias, que por sua vez se tornam bem mais evidentes quando vrias sequncias so comparadas. Um alinhamento de k sequncias biolgicas uma disposio matricial destas k sequncias. Cada linha da matriz formada pelos smbolos da sequncia em questo, eventualmente com smbolos - (representando buracos ) acrescentados entre smbolos consecutivos da sequncia original. Colunas somente com buracos no so permitidas, o alinhamento com maior nmero de colunas possvel um em que em cada coluna h k 1 buracos e um nico smbolo que relativo a uma das k sequncias. Na Figura 1 vemos um exemplo de alinhamento de trs protenas (sequncias de letras num alfabeto de 20 aminocidos). Na primeira coluna
IVNGEEAvpgSWPWQVSLQDktgF---HFCGGSLINENWVVTAAHCgvttSDVVVA-GEFdqgsssekiQKLKIA IVGGYTCganTVPYQVSLN--SgY---HFCGGSLINSQWVVSAAHCyksGIQVRL--GEDninvvegneQFISAS VVGGTEAqrnSWPSQISLQYrsgsswAHTCGGTLIRQNWVMTAAHCvdrelTFRVVVGEHnlnqnngteQYVGVQ

Figura 1: Alinhamento das protenas: chymotripsina bovina, tripsina bovina, e elastase suna. As 20 letras usadas representam os 20 aminocidos possveis. Letras maisculas foram usadas em colunas com maior pontuao. Hfens representam buracos, por exemplo devidos remoo histrica de algum smbolo. do alinhamento, vemos alinhados os aminocidos I, I e V, que descreve uma substituio do smbolo I na primeira e segunda sequncias pelo smbolo V na terceira. Diversos alinhamentos so possveis para um mesmo conjunto de sequncias e a prxima seo descreve estratgias usadas para escolher um que seja melhor. Alm disso, descreveremos implicitamente um modo alternativo para representar um alinhamento atravs de um conjunto de arestas ligando pontos de coordenadas inteiras, que sero melhor denidos a seguir.
3 Pontuao de um alinhamento

Vrios alinhamentos (hipteses evolutivas) podem ser propostos para um mesmo conjunto de sequncias. Um problema que naturalmente se coloca o de qual o melhor alinhamento. O melhor alinhamento A est associado a uma pontuao que resulta de mtodos estatsticos e que maximiza a probabilidade de que o alinhamento A reita as evolues do ancestral comum s sequncias em questo. Costumeiramente so feitas vrias hipteses simplicadoras nas elaboraes dos modelos matemticos usados em biologia computacional. Por exemplo, comumente adota-se a hiptese de que a pontuao adequada de um alinhamento a soma de pontuaes das colunas e as pontuaes das colunas de um alinhamento independem completamente da pontuao das demais colunas. Para cada coluna, sua pontuao depende apenas dos smbolos presentes na coluna. Comumente adota-se o esquema de pontuao conhecido como soma de pares em que a pontuao adotada para a coluna a soma das pontuaes dos pares de smbolos presentes em linhas distintas na coluna. Se temos k linhas na coluna, temos k(k 1)/2 pares de smbolos possveis na coluna. Para k = 3, temos trs pares. 2

Para efeito didtico, faremos mais algumas simplicaes e no entraremos em detalhes em relao aos esquemas de pontuao de fato utilizados por um bilogo. Assim: Um par de smbolos idnticos ser pontuado com:
o parmetro r (encontro ), se o smbolo no for o de um buraco (-); 0, caso contrrio.

Um par de smbolos distintos pontuado com:


o parmetro g , se um deles buraco ; o parmetro q (desencontro ), caso contrrio1 .

Uma propriedade interessante de um alinhamento que cada coluna c composta de k smbolos. Na i-sima linha desta coluna, temos ou buraco, ou um smbolo da i-sima sequncia sendo alinhada. Por exemplo, dadas as sequncias de nucleotdeos ATC, CGGA e CACT, um possvel alinhamento mltiplo o destacado na Figura 2. A cada coluna do alinhamento corresponde

T C A
0,0,0 0,1,1 0,2,1 0,3,1

C G

A C T C x

y
2,4,2

1,4,2 3,4,4 3,4,3

x: - - - A T C y: C G G A - - z: C - - A - C T
Figura 2: Um alinhamento mltiplo das sequncias ATC, CGGA e CACT.

uma aresta do caminho azul do vrtice de coordenadas (0, 0, 0) at o vrtice de coordenadas


mismatch, respectivamente.
1 Em

textos de lngua inglesa, os termos usados para buraco, encontro e desencontro so gap, match e

A aresta do caminho destacada por linha pontilhada vermelha, por exemplo, corresponde coluna do alinhamento destacada por linha pontilhada vermelha. Nesta coluna esto presentes os smbolos -, G e -. Equivale a dizer que no alinhado nenhum nucleotdeo das sequncias x e z, denotado pelos buracos -, enquanto que alinhado o nucleotdeo G da sequncia y. Observe que somente a coordenada da sequncia y sofreu alterao j que a aresta em questo parte do ponto (0, 1, 1) para chegar ao ponto (0, 2, 1). De fato, os smbolos presentes so muito bem denidos pelas coordenadas dos pontos de partida e chegada da aresta em questo: um buraco - usado se e s se a coordenada em questo no muda. De uma maneira geral, seja uma aresta que parte do ponto P e chega no ponto Q e seja ji a i-sima coordenada do destino Q da aresta. O smbolo associado sequncia Si na coluna do alinhamento :
o ji -simo smbolo de Si , se a i-sima coordenada da origem P for ji 1; um buraco -, se a i-sima coordenada do ponto de origem P for ji .

(3, 4, 4). (Observe que 3, 4 e 4 so os respectivos comprimentos das sequncias x, y e z .)

A cada diferena possvel QP chamamos de deslocamento. Observe que o conjunto dos deslocamentos so os vrtices no cubo k -dimensional de coordenadas 0 ou 1, exceto (0, 0, . . . , 0), como os cubos na Figura 3. Denimos o conjunto
= {0, 1}k \ {0}k

como sendo este conjunto de diferenas possveis. Observe que tem 2k 1 deslocamentos, e que = {(0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)} no caso em que k = 3. Nesta gura, vemos exemplos para k = 2 sequncias e para k = 3 sequncias. A pontuao numa tal coluna associada a uma aresta do ponto P at o ponto Q denotada por
W (P, Q).

Voltando ao exemplo da Figura 2, a pontuao da coluna pontilhada vermelha a soma das pontuaes associadas aos pares (-,G), (-,-) e (G,-), que d g + 0 + g = 2g . Podemos fazer o mesmo para a aresta e coluna destacadas por linhas tracejadas azuis, que corresponde ao alinhamento de trs A's. Neste caso todas as coordenadas so incrementadas de 1 quando se considera a origem (0, 3, 1) e o destino (1, 4, 2) da aresta. A pontuao da coluna 3r. Outro exemplo de alinhamento mltiplo para as mesmas sequncias pode ser visto na Figura 4, onde as trs colunas nais do alinhamento so diferentes, apesar da pontuao dos dois alinhamentos ser a mesma.
4 A formulao do problema

Assim estamos prontos para a formulao do problema de alinhamento mltiplo de sequncias: 4

(0,0,1)

(0,1,1)

(0,0)

(0,1)

(0,0,0)

(0,1,0)

(1,0,1) (1,1,1)

(1,0) k=2

(1,0)

(1,0,0) k=3

(1,1,0)

Figura 3: Cubos k -dimensionais correspondentes s diferenas entre pontos consecutivos associados a colunas do alinhamento para k = 2 e k = 3. Quando k = 3, temos 2k 1 = 7 diferenas possveis a formar o conjunto de diferenas possveis .

T C A
0,0,0 0,1,1 0,2,1 0,3,1

1,4,3 2,4,4

C G

A C T C x

1,4,2 3,4,4

x: - - - A - T C y: C G G A - - z: C - - A C T -

Figura 4: Um alinhamento alternativo para as sequncias ATC, CGGA e CACT. 5

So dados um inteiro k > 0 e k sequncias S1 , S2 , . . . , Sk . So dados parmetros r, q e g que so pontuaes para encontro, desencontro e buraco. Queremos obter um alinhamento mltiplo entre as k sequncias com pontuao mxima. Um alinhamento de pontuao mxima ser chamado de alinhamento timo. Adotaremos k = 3 neste EP. Portanto, teremos exatamente trs sequncias S1 , S2 , S3 para alinhar. Para resolver o problema faremos uso de uma funo recorrente cujos valores sero armazenados numa matriz tridimensional. Para todo i tal que 1 i 3, seja ni o comprimento da sequncia Si . Seja U o conjunto de pontos de coordenadas inteiras
U = {0, 1, . . . , n1 } {0, 1, . . . , n2 } {0, 1, . . . , n3 }.

Seja Q = (Q1 , Q2 , Q3 ) U um ponto neste espao tridimensional. Denotamos por


Si [1..Qi ]

o prexo de comprimento Qi da sequncia Si . Quando Qi = 0, o prexo Si [1..Qi ] o prexo vazio. Denotamos por S(Q) o conjuntos dos prexos
S(Q) = {S1 [1..Q1 ], S2 [1..Q2 ], S3 [1..Q3 ]}

e denimos p(Q) como sendo a pontuao de um alinhamento timo para as sequncias de S(Q). Para nossa felicidade, ao se remover a ltima coluna de um alinhamento timo A(Q), o alinhamento que permanece tambm timo. Observe que quando removemos a ltima coluna de um alinhamento para S(Q), obtemos um alinhamento para as sequncias de S(Q ), onde = (1 , 2 , 3 ) tal que cada i 1 se a linha correspondente sequncia Si na coluna era diferente de buraco e 0 caso contrrio. Denimos p(Q) = 0 quando Q = (0, 0, 0) e no denimos a pontuao de nenhum ponto Q fora de U . De forma geral, para os demais pontos de U , a pontuao do alinhamento timo entre os prexos em S(Q) pode ser denida2 de forma recorrente por
p(Q) = max({p(P ) + W (P, Q) | P = Q U para algum }).

(1)

Naturalmente que no caso geral so 2k 1 = 7 (para k = 3) pontos Q , mas quando alguma coordenada de Q for nula, nem todos os 7 pontos Q tm valor p(Q ) denido pois alguns tm coordenadas negativas. Observe que a pontuao mxima de um alinhamento mltiplo (timo) para as trs sequncias dadas o valor de p(Q), para Q = (n1 , n2 , n3 ). Voltemos ao exemplo da Figura 2. Temos as trs sequncias S1 , S2 e S3 denidas como respectivamente ATC, CGGA e CACT. Os valores de n1 , n2 e n3 por sua vez so 3, 4 e 4, respectivamente. A Tabela 1 lista o conjunto dos pontos de U , neste caso.
denio das recorrncias (1) no funcionariam para Q = (0, 0, 0) pois o conjunto sob o qual se tomaria o mximo seria vazio. De fato, (0, 0, 0) o nico ponto de U em que o conjunto em questo vazio.
2 Esta

(0,0,0) (0,1,0) (0,2,0) (0,3,0) (0,4,0) (1,0,0) (1,1,0) (1,2,0) (1,3,0) (1,4,0) (2,0,0) (2,1,0) (2,2,0) (2,3,0) (2,4,0) (3,0,0) (3,1,0) (3,2,0) (3,3,0) (3,4,0)

(0,0,1) (0,1,1) (0,2,1) (0,3,1) (0,4,1) (1,0,1) (1,1,1) (1,2,1) (1,3,1) (1,4,1) (2,0,1) (2,1,1) (2,2,1) (2,3,1) (2,4,1) (3,0,1) (3,1,1) (3,2,1) (3,3,1) (3,4,1)

(0,0,2) (0,1,2) (0,2,2) (0,3,2) (0,4,2) (1,0,2) (1,1,2) (1,2,2) (1,3,2) (1,4,2) (2,0,2) (2,1,2) (2,2,2) (2,3,2)
(2,4,2)

(3,0,2) (3,1,2) (3,2,2) (3,3,2) (3,4,2)

(0,0,3) (0,1,3) (0,2,3) (0,3,3) (0,4,3) (1,0,3) (1,1,3) (1,2,3) (1,3,3) (1,4,3) (2,0,3) (2,1,3) (2,2,3) (2,3,3) (2,4,3) (3,0,3) (3,1,3) (3,2,3) (3,3,3) (3,4,3)

(0,0,4) (0,1,4) (0,2,4) (0,3,4) (0,4,4) (1,0,4) (1,1,4) (1,2,4) (1,3,4) (1,4,4) (2,0,4) (2,1,4) (2,2,4) (2,3,4) (2,4,4) (3,0,4) (3,1,4) (3,2,4) (3,3,4) (3,4,4)

Tabela 1: Conjunto U para o exemplo da Figura 2.

Como exemplo, tomemos o ponto Q = (2, 4, 2). O conjunto de S(Q) associado a este ponto formado pelos prexos AT, CGGA, CA. Observe que na prpria Figura 2 temos um alinhamento para S(Q) ao tomarmos o alinhamento formado pelas cinco primeiras colunas do alinhamento ali exibido. A ltima coluna deste alinhamento, a quinta coluna, associada ao deslocamento = (1, 0, 0), de forma que o ponto Q = (1, 4, 2), e um alinhamento para S(Q ) o alinhamento obtido ao remover a quinta coluna e car apenas com as quatro primeiras colunas. (Caso tenhamos que o alinhamento da gura seja timo, aos alinhamentos de S(Q) e S(Q ) descritos acima tambm devero ser timos, como tambm dever ser timo o alinhamento de qualquer ponto na trajetria de (0, 0, 0) a (3, 4, 4) que est na linha azul em destaque.) O conjunto de deslocamentos para o caso em questo aquele da Figura 3, caso k = 3. Ao se querer computar p(Q) usando as recorrncias (1), somos levados a tomar o mximo sobre 7 valores possveis, cada um deles em funo de uma possvel escolha de em . Cada uma destas escolhas, dene um ponto Q . As recorrncias (1) recorrem aplicao da funo p em cada um dos pontos Q , que em nosso caso so: (2, 4, 1), (2, 3, 2), (2, 3, 1), (1, 4, 2), (1, 4, 1), (1, 3, 2) e (1, 3, 1). (Na Tabela 1, estes 7 pontos Q esto dentro de um retngulo, enquanto que o ponto Q est em negrito.) Para = (1, 0, 0), o ponto Q (1, 4, 2) e contribui no clculo do mximo com o valor
p((1, 4, 2)) + W ((1, 4, 2), (2, 4, 2)).

A coluna associada aresta de (1, 4, 2) a (2, 4, 2)


T

e que possui pontuao g + g + 0 = 2g . Assim, W ((1, 4, 2), (2, 4, 2)) = 2g .


5 Recorrendo a uma matriz

Para calcular a funo recorrente p : U R denida acima, a maneira mais apropriada ao contedo visto em aula atravs do uso de uma matriz tridimensional M de tamanho (n1 + 1)(n2 + 1)(n3 + 1). Para cada ponto Q U , armazenamos em M [Q1 ][Q2 ][Q3 ] o valor de p(Q). Assim, usando as recorrncias (1), podemos calcular os valores da Matriz M pela frmula abaixo:
M [Q1 ][Q2 ][Q3 ] = max({M [P1 ][P2 ][P3 ]+W (P, Q) | P = Q U para algum }), (2)

que toma o mximo num conjunto de no mximo 7 valores (um para cada possvel ). Atravs de trs laos (loops) encaixados possvel facilmente varrer todos os pontos de U , realizando os clculos necessrios e buscando os valores M [P1 ][P2 ][P3 ] vistos na prpria matriz M . Na Tabela 1, por exemplo, vemos os pontos de U listados numa ordem tal que, ao computarmos p em cada um destes pontos Q e armazenar na posio correspondente da 8

matriz M , todos os valores p(Q ) necessrios ao clculo de p(Q) j tero sido computados e armazenados na posio correspondente da matriz M . Em nosso exemplo acima visto na listagem da Tabela 1, observe que o ponto Q = (2, 4, 2) em negrito aparece depois dos 7 possveis pontos P = Q que esto emoldurados. Quando o valor de M [2][4][2] for computado como o mximo entre os sete valores
M [2][4][1] + W ((2, 4, 1), (2, 4, 2)), M [2][3][2] + W ((2, 3, 2), (2, 4, 2)), M [2][3][1] + W ((2, 3, 1), (2, 4, 2)), M [1][4][2] + W ((1, 4, 2), (2, 4, 2)), M [1][4][1] + W ((1, 4, 1), (2, 4, 2)), M [1][3][2] + W ((1, 3, 2), (2, 4, 2)), M [1][3][1] + W ((1, 3, 1), (2, 4, 2)),

os sete elementos da matriz M utilizados j tero sido computados. Na listagem da Tabela 2, podemos ver emoldurados este 7 valores (correspondentes aos pontos emoldurados da Tabela 1). Em negrito, vemos o valor de M [2][4][2]. Tabela 2: Pontuaes dos pontos de U para o exemplo da Figura 2. Os pontos de U esto listados na Tabela 1 e estamos supondo parmetros r = 10, q = 1, g = 3. 0 -6 -12 -18 -24 -6 4 -2 -8 -14 -12 -2 -3 -9 -15 -18 -8 -9 -10 -16 -24 -14 -4 -10 -16 -6 -7 -2 -8 -14 -7 8 8 2 -4 -13 2 12 6 0 6 5 -1 -19 -4 -14 -4 22 16 10 -12 -13 -8 -9 -4 -13 2 2 6 6 -14 1 6 5 10 -20 -5 5 9 14 -20 -10 16 15 20 -18 -8 -14 -4 -10 -8 18 12 22 16 -14 12 11 16 15 -20 6 5 14 9 -26 0 10 20 14

O que deve ser entregue

O aluno deve entregar um programa escrito em C que leia do teclado trs inteiros r, q e g , um inteiro k = 33 e k strings S1 , S2 , S3 correspondentes s k = 3 sequncias em questo. O programa l ainda um parmetro listamatriz. O programa deve imprimir a pontuao do alinhamento mltiplo de maior pontuao. Deve ainda listar a matriz de pontuao no estilo da Tabela 2 caso listamatriz seja diferente de 0. Para o exemplo do alinhamento da Figura 2, os dados de entrada bem poderiam ser:
10 -1 -3 3 ATC CGGA CACT 1

Teste com estes dados. (Aps calcular um alinhamento timo, pode-se conferir se o exemplo da Figura 2 um alinhamento timo ou no.) O programa escrito deve implementar funes em C cujos prottipos so fornecidos a seguir. 1. Primeiramente denimos o smbolo K como sendo 3. Cada ponto Q U ser representado por um vetor de inteiros com K elementos. As trs sequncias Si tero comprimento no maior que NMAX e sero armazenadas numa matriz S[K][NMAX]. A linha S[0] guarda a primeira sequncia S1 , a segunda linha S[1] guarda a sequncia S2 e assim por diante.
#define K #define DOISKUM #define NMAX 3 7 60 /* 2^k - 1 */

2. Cada elemento = (1 , 2 , . . . , k ) pode ser entendido como a representao binria do nmero


f () = k + k1 21 + . . . + 1 2k1 .

Observe que a funo f bijetora e que a imagem da funo f assim denida justamente f () = {1, 2, . . . , 2k 1}. A funo Vizinho recebe um ponto Q e um inteiro d em f (), e devolve em P o ponto Q f 1 (d). Ademais, a funo retorna TRUE se P U, e retorna FALSE caso contrrio.
int Vizinho( int Q[K], int d, int P[K]);
prtica, como o valor k xo, ele no precisaria ser lido. Mantivemos esse parmetro, entretanto, considerando que alguns alunos podem querer tentar generalizar seus programas para outros valores de k. Esse exerccio interessante e encorajamos seu desenvolvimento, mas ele NO ser solicitado para entrega NEM considerado para nota.
3 Na

10

3. A funo W recebe dois pontos P e Q tais que Q P e retorna a pontuao da coluna (de alinhamento) associada aresta de P para Q. As sequncias esto na matriz S e os parmetros r, q e g guardam os parmetros de pontuao para encontro, desencontro e buraco.
int W( int P[K], int Q[K], char S[K][NMAX], int r, int q, int g );

4. Exerccio complementar4 : O programa tambm deve imprimir um tal alinhamento de mxima pontuao num formato semelhante ao da Figura 2. Neste caso, depois de calcular a Matriz M , deve-se buscar reconstruir de trs para frente os pontos da trajetria de (0, 0, . . . , 0) a (n1 , n2 , . . . , nk ) que levaram s escolhas mximas (trajetria da linha azul no caso do exemplo da Figura 2).
6 Executveis, consistncia e entrega do EP

Exemplos de dados e executveis deste exerccio-programa podero ser encontrados oportunamente em http://www.ime.usp.br/~mac2166/ep4. Caso voc tenha dvidas sobre qual deve ser o comportamento do seu programa em alguma situao, veja como se comporta este executvel. O seu programa no precisa fazer consistncia de dados. O programa pode supor que todos os dados lidos (opes, nmero, . . . ) esto corretos. Todo exerccio programa deve seguir as observaes contidas na pgina http://www.ime.usp.br/~mac2166/infoeps, onde esto descritas as diretrizes para forma de entrega do exerccio, aspectos importantes na avaliao etc.
7 Apndice

Por curiosidade5 , pode-se observar que o tempo de execuo proporcional a k(k1) (2k 2 1) (n1 + 1)(n2 + 1) (nk + 2), que um tempo tempo assintoticamente semelhante a
k 2 2k nk ,

se as k sequncias tiverem o mesmo comprimento n. Para duas sequncias (k = 2), o tempo quadrtico e cbico para k = 3. O espao de memria usado neste algoritmo descrito proporcional matriz de tamanho (n1 + 1)(n2 + 1) (nk + 2). De fato, para cada um destes 2k 1 elementos de onde os mximos so tomados, computamos uma pontuao da forma W (Q , Q), que demora tempo proporcional a k(k1) como j vimos. Isto feito em cada 2 posio da matriz.

exerccio complementar no obrigatrio e no vale nota. Ele um desao complementar para os alunos que tiverem interesse e vontade de enfrent-lo. 5 Este pargrafo tem por nalidade fazer uma rpida anlise do algoritmo descrito neste EP, ainda que ela no seja necessria prpria elaborao do EP.
4O

11

Das könnte Ihnen auch gefallen