Uliniowania sekwencji – wersja wst˛epna
Transkrypt
Uliniowania sekwencji – wersja wst˛epna
Uliniowania sekwencji – wersja wst˛epna January Weiner 3 20 stycznia 2004 Dokument nie jest jeszcze całkiem gotowy i może zawierać bł˛edy. Publikacja i rozpowszechnianie nie sa˛ dozwolone bez uprzedniej wyraźnej zgody autora. Wszelkie uwagi, krytyki i komentarze sa˛ bardzo mile widziane; prosz˛e przesyłać je na adres [email protected] c by January Weiner 3, 2003. All rights reserved. 2 Rozdział 1 Uliniowania sekwencji 1.1 Co to jest i do czego służy uliniowywanie sekwencji? Powiedzmy, że mamy dwie sekwencje podobnych do siebie białek. Zapewne chcielibyśmy uożyć je wzgl˛edem siebie, tak by ujrzeć różnice i podobieństwa; przekonać si˛e, które fragmenty sekwencji sa˛ mniej, a które bardziej zmienne. Dzi˛eki temu b˛edziemy np. mogli zaproponować funkcjonalne domeny białka, które nie ulegaja˛ zmianom w toku ewolucji, albo przewidzieć, które aminokwasy decyduja˛ o enzymatycznej aktywności porównywanych białek. Być może uda si˛e nawet powiedzieć coś o ewolucyjnej drodze, jaka˛ przebyły obie sekwencje. Ważnym sposobem oceny podobieństwa mi˛edzy dwoma sekwencjami jest ich uliniowanie (patrz ramka 1.1). Uliniowanie dwóch sekwencji polega na takim ich ułożeniu, by każda litera jednej sekwencji była przypisana albo pewnej literze drugiej sekwencji, albo przerwie; przy tym musi zostać zachowana kolejność liter. Terminologia W j˛ezyku angielskim takie uliniowanie dwóch sekwencji wzgl˛edem siebie nazywane jest “alignment” a proces takiego układania “aligning” Nie ma dobrego odpowiednika tego słowa po polsku. Tu i ówdzie przyjał ˛ si˛e neologizm “elajment” ale mnie osobiście wydaje si˛e on dość pokraczny. Na potrzeby tego tekstu przyjałem ˛ słowo “uliniowanie” oraz “uliniować”. Można też mówić o uliniowaniu badź ˛ układaniu sekwencji. Niezwykle ważnym zastosowaniem uliniowywania sekwencji jest przeszukiwanie baz danych sekwencji. Wszystkie poznawane przez naukowców na całym świecie sekwencje DNA, cDNA, RNA i białek sa˛ zebrane w dużych bazach danych takich jak NR (non redundant), SWISS-prot czy TrEMBL (patrz rozdział poświ˛econy bazom danych). Pierwszym krokiem do identyfikacji nowo poznanej sekwencji b˛edzie zawsze porównanie jej z sekwencjami już znanymi, cz˛esto doskonale zbadanymi i o wyjaśnionej funkcji biologicznej. Porównanie takie polega na kolejnych uliniowaniach, a nast˛epnie porównywaniu wyników tych uliniowań. Oczywiście, można nie poprzestać na uliniowaniu tylko dwóch sekwencji. Możemy przecież chcieć porównać ich trzy, cztery, a może nawet znacznie wi˛ecej. Tego typu uliniowanie nazywa si˛e wielokrotnym (ang. multiple alignment) i b˛edzie o nim mowa w rozdziale ??. Niektóre bazy danych, na przykład Pfam lub PRODOM złożone sa˛ z wielokrotnych uliniowań. Nowe sekwencje dołacza ˛ si˛e do uliniowań, aby zidentyfikować w nich ewentualne konserwowane motywy, znane elementy struktury czwartorz˛edowej – takie jak ‘zamki leucynowe’ (łeucine zipper") – lub funkcjonalne domeny. 3 1.1. CO TO JEST I DO CZEGO SŁUŻY ULINIOWYWANIE SEKWENCJI? a) 10 20 30 40 50 VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHF-DLS-----HGSA :.: .:. : : :::: .. : :.::: :... .: :. .: : ::: :. VHLTPEEKSAVTALWGKV--NVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNP 10 20 30 40 50 60 70 80 90 100 110 QVKGHGKKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHL .::.::::: :.....::.:.. .....::.:: ::.::: ::.::.. :. .:: :. KVKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHF 60 70 80 90 100 110 120 130 140 PAEFTPAVHASLDKFLASVSTVLTSKYR :::: :.:. .: .:.:...:. ::. GKEFTPPVQAAYQKVVAGVANALAHKYH 120 130 140 b) Prawidłowe uliniowania: (i) (ii) (iii) ATTCGTA || | ATCGATT ATTCGTA|| |||| AT-CGTAT ATTCG-TA | ||| | A-TCGATT (iv) (v) (vi) A-TTC-GTA | | ATC-GA-TT A--TTCG-TA || | -AT--CGATT ATTCGTA-----------ATCGATT Bł˛edne uliniowania: (vii) Uliniowanie, w którym nie zachowano kolejności liter w sekwencji (viii) Uliniowanie, w którym istnieja˛ przerwy nie przypisane żadnym literom sekwencji ATTCGTA|| || AT-CGATT ATTCGTA---------------------ATCGATT Rysunek 1.1: (a) Uliniowanie sekwencji dwóch białek – ludzkiej hemoglobiny α i β. Dwukropek (‘:’) oznacza pary identycznych aminokwasów, kropka (‘.’) zaś – pary podobnych aminokwasów. (b) Różne uliniowania dwóch sekwencji DNA: ATTCGTA i ATCGATT. Jak widać, niekoniecznie musi być w uliniowaniu chociaż jedna litera odpowiadajaca ˛ drugiej. Ulinowanienie (vi) pokazuje, dlaczego nie może być wi˛ecej przerw, niż liter w sekwencji: każda kolejna przerwa w jednej z sekwencji może odpowiadać tylko przerwie w drugiej sekwencji – a taka˛ kombinacj˛e można z uliniowania wykreślić. 4 ROZDZIAŁ 1. ULINIOWANIA SEKWENCJI Na rysunku 1.1 (a) ulinowaniono wzgl˛edem siebie dwie sekwencje białka. Gołym okiem można zauważyć podobne do siebie fragmenty – jednak w innych podobieństwo b˛edzie znacznie słabsze. Cz˛esto b˛edzie trudno zdecydować: czy wyróżniona na rys. kółkiem glicyna w górnej sekwencji odpowiada raczej glicynie nr 21, czy glicynie nr 23 z dolnej sekwencji? Możliwości zapewne jest dużo. Rys. 1.1 (b) przedstawia kilka możliwych uliniowań dwóch krótkich sekwencji nukleotydowych. Jak zdecydować, które z nich jest najlepsze? Co w ogóle znaczy - “najlepsze uliniowanie” Innymi słowy - jak porównywać ze soba˛ różne uliniowania? Należy znaleźć funkcj˛e, która każdemu możliwemu uliniowaniu jednoznacznie przypisze pewna˛ wartość, która˛ nazwiemy punktacja˛ (score) tego uliniowania. Kilka ważnych poj˛eć litera w sekwencji może określać nukleotyd (w sekwencji nukleotydowej), aminokwasy (w sekwencji białka), lub np. litera ’N’ lub ’X’ oznaczajaca ˛ odpowiednio dowolny nukleotyd lub dowolny aminokwas, czy litery kodu IUPAC (por. dodatek) uliniowanie (alignment) to wprowadzenie do dwóch sekwencji pewnej liczby przerw, tak, by suma liczby liter i przerw w każdej sekwencji była równa optymalne uliniowanie (optimal alignment) to takie uliniowanie, w którym możliwie duża liczba liter jednej sekwencji odpowiada takim samym lub podobnym literom w drugiej uliniowanie globalne (global alignment) to uliniowanie obu sekwencji w całości, zaś uliniowanie lokalne (local alignment) to uliniowanie tylko fragmentów obu sekwencji uliniowanie wielokrotne (multiple alignment) to uliniowanie wi˛ecej niż dwóch sekwencji punktacja (score) to sposób oceniania poszczególnych uliniowań. Przyznaje si˛e punkty za podobieństwo odpowiadajacych ˛ sobie w uliniowaniu liter obu sekwencji oraz – zazwyczaj ujemne – za wprowadzone przerwy. 1.1.1 Porównywanie uliniowań – punktacja Na rysunku 1.1 (b) gołym okiem można stwierdzić, że niektóre uliniowania sa˛ lepsze od innych – chociażby liczba˛ pasujacych ˛ do siebie aminokwasów. Intuicyjnie łatwo stwierdzić, że dopasowanie b˛edzie tym lepsze, im wi˛ecej aminokwasów z pierwszej sekwencji ulinowanionych jest nad dokładnie takimi samymi aminokwasami z drugiej sekwencji. Najprostszym rozwiazaniem ˛ byłoby przyznać 1 za każda˛ pasujac ˛ a˛ par˛e (match, np. A/A lub L/L) i -1 za każde niedopasowanie (mismatch, np. A/L lub A/-). Wówczas suma punktów – nazwiemy ja˛ “punktacja”, ˛ co jest odpowiednikiem angielskiego słowa score – b˛edzie bezpośrednio odwzorowywała procent podobieństwa mi˛edzy sekwencjami. Tak rozwiazane ˛ punktowanie stosuje si˛e faktycznie w przypadku sekwencji nukleotydowych. Macierz, w której umieszczane sa˛ punkty za tożsamość nukleotydów lub jej brak nazywa si˛e “ma5 1.1. CO TO JEST I DO CZEGO SŁUŻY ULINIOWYWANIE SEKWENCJI? cierza˛ tożsamości” (identity matrix, rys. 1.2). A C T G A 1 -1 -1 -1 C G T -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 Rysunek 1.2: Macierz tożsamości dla nukleotydów. W przypadku sekwencji białek sprawa jest jednak trudniejsza. Jeśli w trakcie ewolucji histydyna zostanie zastapiona ˛ podobnym do niej aminokwasem – lizyna,˛ która jest również hydrofobowa i dodatnio naładowana – to macierz tożsamości przyzna temu podstawieniu równie niska˛ wartość, jak w przypadku, gdy histydyn˛e zastapi ˛ polarna i nie naładowana seryna. Poza tym, w toku ewolucji pewne podstawienia moga˛ być – nie tylko w wyniku podobnych właściwości aminokwasów – bardziej prawdopodobne od innych. Macierz, na podstawie której przyznawane sa˛ punkty, winna wi˛ec uwzgl˛edniać podobieństwa mi˛edzy różnymi aminokwasami. Tego typu macierzy stworzono wiele; sposoby ich tworzenia opisane sa˛ w nast˛epnym rozdziale. Ogólnie rzecz biorac, ˛ punktacja dwóch aminokwasów może być bardzo różna, i odpowiada prawdopodobieństwu, z jakim jeden aminokwas bywa zast˛epowanym przez drugi w toku ewolucji. Ujemne wartości oznaczaja˛ mniejsze podobieństwo aminokwasów. Punktacja uliniowania powinna uwzgl˛edniać jeszcze jedna˛ rzecz – przerwy wyst˛epujace ˛ w uliniowaniu. W ewolucyjnej interpretacji uliniowania każda przerwa odpowiada zdarzeniu delecji w jednej, badź ˛ insercji w drugiej sekwencji. Im wi˛ecej przerw, tym mniejsze podobieństwo mi˛edzy sekwencjami – a wi˛ec za każda˛ przerw˛e należy odjać ˛ pewna˛ liczb˛e punktów od całkowitej punktacji uliniowania. Ta˛ liczb˛e nazywa si˛e kara˛ za przerwy (“gap penalty”). 1.1.2 Ulinowanienia globalne i lokalne Nawet, jeśli dwie sekwencji nie sa˛ na całej swej długości silnie homologiczne to przecież ich cz˛eści moga˛ być bardzo podobne. Bardzo cz˛esto ilniejsze podobieństwa wyst˛epuja˛ w funkcjonalnych domenach. Dlatego rozróżnia si˛e uliniowania globalne (“global alignment”), w których uliniowaniu ulega cała sekwencja, oraz uliniowania lokalne (“local alignment”), w przypadku których chodzi nam tylko o znalezienie krótszych, homologicznych fragmentów obu sekwencji. 1.1.3 Analiza par sekwencji za pomoca˛ wykresów punktowych Najprostszym sposobem na uwidocznienie podobnych fragmentów dwóch sekwencji jest utworzenie wykresu punktowego (“dot plot”). Oś X opisuje jedna,˛ oś Y zaś – druga˛ sekwencj˛e; na przykład, punkt o współrz˛ednych (10, 20) odpowiada dziesiatemu ˛ aminokwasowi badź ˛ nukleotydowi pierwszej sekwencji oraz dwudziestemu — drugiej. W najprostszym wypadku – na przykład w przypadku sekwencji DNA – należy nanieść na wykresie punkt w każdym miejscu, które odpowiada identycznym nukleotydom. Na przykład, jeśli adenina wyst˛epuje zarówno na pozycji 5 w pierwszej sekwencji, jak i na pozycji 8 w drugiej, to należy nanieść punkt o współrz˛ednych (5, 8). Nieco inaczej post˛epuje si˛e w przypadku sekwencji aminokwasów. Wykres powinien w jakiś sposób uwidocznić punktacj˛e odpowiadajac ˛ a˛ obu aminokwasom, a nie tylko wskazywać na identyczne aminokwasy. Właściwie w tym wypadku mamy do czynienia z trzecim wymiarem, w którym oś Z odpowiada punktacji (rys. 1.4). W praktyce stosuje si˛e jednak dwie metody. Pierwsza, graficzna, stosuje różne odcienie szarości dla unaocznienia punktacji (rys. 1.3). W drugiej przyjmuje si˛e 6 ROZDZIAŁ 1. ULINIOWANIA SEKWENCJI Rysunek 1.3: Wykres punktowy łańcuchów alfa i beta ludzkiej hemoglobiny. Po lewej stronie nie stosowano okienka uśredniania: zaczernienie odpowiada bezpośrednio wartości punktacji dla danych dwóch aminokwasów. Po prawej stronie widać, jakie efekty przynosi użycie uśredniania: użyto okienko długości dziesi˛eciu aminokwasów, tak iż każdy punkt odpowiada średniej z dziesi˛eciu nast˛epujacych ˛ po sobie aminokwasów w obu sekwencjach. pewien próg punktacji, od którego na wykresie pojawia si˛e punkt. Gdyby stworzyć trójwymiarowy wykres, w którym “szczyty” odpowiadaja˛ wysokiej, a “doliny” niskiej punktacji, to próg odpowiadałby pewnej płaszczyźnie poziomo przecinajacej ˛ wykres (rys. 1.4); na dwuwymiarowym wykresie umieszcza si˛e wówczas tylko to, co znajduje si˛e ponad pozioma˛ płaszczyzna.˛ Aby wyraźniej było widać obszary homologii, korzysta si˛e z przesuwajacego ˛ si˛e wzdłuż obu sekwencji okna o długości kilku do parudziesi˛eciu aminokwasów, i sumuje si˛e punktacj˛e par aminokwasów zawartych w tym oknie. Wykresy punktowe w bardzo wygodny sposób uwidaczniaja˛ podobieństwa mi˛edzy dwoma sekwencjami. Łatwo dojrzeć insercje i delecje w jednej z sekwencji czy rejony o wysokim stopniu konserwacji (dużym podobieństwie). Można je wykorzystywać też do poszukiwania i wizualizowania rejonów repetytywnych w jednej sekwencji – przez utworzenie wykresu punktowego tej sekwencji z sama˛ soba.˛ 1.2 Algorytmy układania sekwencji Skoro już wiemy, w jaki sposób punktować różne uliniowania, możemy porównać ze soba˛ dwa z nich i stwierdzić, które jest lepsze. To już dużo; ale nam zależy na tym, by znaleźć sposób na znalezienie możliwie najlepszego uliniowanie – tak, by można było na przykład napisać program znajdujacy ˛ takie uliniowania. Należy zauważyć, że o ile możliwe sa˛ różne uliniowania o tej samej punktacji, to istnieje tylko jedna maksymalna punktacja. Szukamy algorytmu optymalizacyjnego, który znajdzie nam owa˛ maksymalna˛ punktacj˛e. Najprostsza˛ metoda˛ byłoby sprawdzenie po kolei wszystkich możliwych uliniowań obu sekwencji. W ten sposób mamy gwarancj˛e, iż znajdziemy najlepsze możliwe uliniowanie, a sam algorytm jest łatwy do zaimplementowania i zrozumienia. Niestety, ma jedna˛ poważna˛ wad˛e. Liczba możliwych uliniowań dwu sekwencji rośnie bardzo szybko wraz długości obu sekwencji (patrz ramka na stronie 1.2.2). Obliczono, że dla długości sekwencji 1000 liczba możliwych uliniowań wynosi po7 1.2. ALGORYTMY UKŁADANIA SEKWENCJI A 80 60 40 20 0 -20 -40 -60 140 120 100 80 60 40 0 20 40 20 60 80 100 0 120 B 80 60 40 20 0 -20 -40 -60 140 120 100 80 60 40 0 20 40 20 60 80 100 0 120 Rysunek 1.4: Wykres punktowy łańcuchów alfa i beta hemoglobiny z użyciem progów. Po lewej stronie, trójwymiarowe przedstawienie wykresu: oś z odpowiada średniej wartości okienka w danym miejscu w obu sekwencjach. Płaszczyzna przecinajaca ˛ wykres reprezentuje ustalony próg. Po prawej stronie, wykresy utworzone przez program dotter. U góry, próg ustawiono na 0 punktów; poniżej próg ustawiony jest na 30 punktów. Punkty, które na wykresie po lewej stronie znajduja˛ si˛e powyżej progu, zostana˛ zaznaczone na wykresie po prawej stronie. Uśrednianie po przesuwajacym ˛ si˛e okienku Zabieg ten stosuje si˛e bardzo cz˛esto, kiedy oblicza si˛e jakiś parametr wzdłuż pewnej sekwencji DNA lub białka. Nawet, jeśli parametr ten bardzo si˛e różni dla sasiaduj ˛ a˛ cych ze soba˛ aminokwasów, to jego średnia wartość w pewnym przedziale sekwencji może zmieniać si˛e o wiele wolniej. Dla pewnej pozycji w sekwencji, oblicza si˛e wartość parametru dla wybranej liczby aminokwasów badź ˛ nukleotydów – ta liczba to wielkość okienka, jaka˛ si˛e posługujemy. Nast˛epnie przypisuje si˛e wybranej pozycji sum˛e lub – co na jedno wychodzi – średnia˛ obliczonych parametrów i “przesuwa si˛e” okienko dalej, tzn. przechodzi do nast˛epnej pozycji i ponownie dokonuje oblczeń. Jeśli i to aktualna pozycja, f (i) to obliczona wartość parametru dla danej funkcji, a w to długość okienka, to wówczas = iw f (i) w b˛edzie uśredniona˛ w okienku w funkcja˛ f (i). Nie ma wi˛ekszego znaczenia, czy oblicza 8si˛e średnia,˛ czy sum˛e, gdyż dla obranej wielkości okienka w wartości te sa˛ proporcjonalne. fw0 (i) P = k ROZDZIAŁ 1. ULINIOWANIA SEKWENCJI nad 10700 ! Nawet, jeśli obliczenie punktacji dla jednego uliniowania trwa ułamek sekundy, to przez tysiac ˛ lat nieustannych obliczeń sprawdzimy zaledwie nieco ponad 1013 uliniowań. Konieczne staje si˛e zatem użycie jakiegoś algorytmu umożliwiajacego ˛ szybsze odnajdywanie optymalnych uliniowań. W latach 70-ych stworzono w tym celu algorytmy oparte na powstałym w latach pi˛ećdziesiatych ˛ programowaniu dynamicznym. Pierwszym z tych algorytmów został stworzony przez Saula Needlemana, Christiana Wunscha w 1970 roku, a nast˛epnie zmodyfikowany przez P.H. Sellersa. Wpierw jednak należy si˛e zastanowić nad innym sposobem reprezentacji uliniowań. Programowanie dynamiczne. Ta˛ technik˛e stosuje si˛e cz˛esto w przypadku, gdy chodzi o optymalizacj˛e, a wi˛ec znalezienie pewnego najlepszego rozwiazania ˛ spośród całej klasy takich rozwiazań. ˛ Cały problem zostaje rozbity na mniejsze problemy. Istota programowania dynamicznego polega na tym, by uniknać ˛ wielokrotnego powtarzania tych samych obliczeń. Określenie “programowanie” nie odnosi si˛e tutaj bezpośrednio do pisania programów, tylko do zestawu reguł umożliwiajacych ˛ rozwiazanie ˛ problemu. 1.2.1 Tabela uliniowań Rys. 1.5 przedstawia sposób reprezentacji uliniowań w dwuwymiarowej tabeli. Każdemu z możliwych uliniowan odpowiada jedna ścieżka w tabeli. Poruszanie si˛e po takiej ścieżce odpowiada tworzeniu pewnego uliniowania; ruch nast˛epuje z górnego lewego rogu – który odpowiada poczat˛ kowi uliniowania – do dolnego prawego, który jest jego zakończeniem. Z każdej komórki prowadza˛ trzy możliwe drogi do sasiednich ˛ komórek. Ruch po przekatnej ˛ oznacza, że dokładamy do naszego uliniowania jedna˛ liter˛e z pierwszej sekwencji i jedna˛ liter˛e z drugiej, uzyskujac ˛ fragment abji . Jeśli poruszamy si˛e w prawo, oznacza to, że bierzemy jedna˛ liter˛e z pierwszej sekwencji, ale nie poruszamy si˛e wzdłuż drugiej – czyli w dolnej cz˛eści uliniowania wstawiamy przerw˛e, uzyskujac ˛ fragment a−i . Jeśli poruszamy si˛e w dół, sytuacja b˛edzie odwrotna i uzyskamy fragment − (rys. 1.5 bj b). Ten sposób umożliwia reprezentacj˛e wszystkich możliwych uliniowan dla danych dwóch sekwencji. Warto prześledzić uliniowania z rys. 1.5 i odpowiadajace ˛ im ścieżki, by dobrze rozumieć jej mechanizm. 1.2.2 Algorytm Needlemana, Wunscha i Sellersa Wprowadzenie do algorytmu NWS Optymalne uliniowanie, które należy odnaleźć, to pewna ścieżka na tablicy uliniowan przedstawionej w poprzednim akapicie. Wiadomo, jaki jest koszt przejścia z jednej komórki tabeli do drugiej: jeśli przejście jest w prawo lub w dół, to koszt odpowiada kosztowi wbudowania przerwy; jeśli przejście jest na skos w prawo i w dół, to koszt równy jest punktom, jakie otrzymuje si˛e za sparowanie dwóch odpowiadajacych ˛ tej komórce literom (rys. 1.5). Problem znalezienia optymalnej ścieżki można rozbić na mniejsze podproblemy. Rozumowanie przebiega nast˛epujaco: ˛ powiedzmy, że rozważamy ścieżki (czyli uliniowania) przebiegajace ˛ przez pewna˛ komórk˛e, która˛ oznaczymy ai,j – to znaczy, że chodzi nam o komórk˛e znajdujac ˛ a˛ si˛e w i-tej kolumnie i j-ym wierszu. Cz˛eść ścieżki, która biegnie od lewego górnego rogu tabeli (a0,0 ) aż do naszej komórki, to cz˛eść uliniowania obu sekwencji. Jeśli przez nasza˛ komórk˛e przebiega ścieżka odpowiadajaca ˛ optymalnemu uliniowaniu, to także ta jej cz˛eść, która biegnie od lewego górnego 9 1.2. ALGORYTMY UKŁADANIA SEKWENCJI a. A T G G A A b. w dół: koszt wstawienia przerwy skos: koszt pary G/T T T T G A ATG-G-A | -A-TTGA G w prawo: koszt wstawienia przerwy AT-GGA || | | ATTG-A A-TGGA | || ATTGA- Rysunek 1.5: a. Tabela uliniowan dla przykładowych dwóch sekwencji, ATGGA i ATTGA. Trzy różne ścieżki odpowiadaja˛ trzem różnym uliniowaniom b. Trzy możliwości poruszania si˛e w tabeli. 10 ROZDZIAŁ 1. ULINIOWANIA SEKWENCJI Liczba możliwych uliniowań sekwencji dla dwóch sekwencji zlinowanionych z tej samej liczby, N , liter. 1. Różne uliniowania sekwencji biora˛ si˛e z wprowadzania doń przerw różnej długości. Gdy w sekwencjach pojawiaja˛ si˛e przerwy, to liczba przerw w obu sekwencjach b˛edzie taka sama, ponieważ suma długości przerw oraz sekwencji musi być w obu przypadkach taka sama i równa długości całego uliniowania L. 2. Przerw może być co najwyżej N , gdyż każda przerwa musi odpowiadać jednej literze z drugiej sekwencji, a tych jest N ; przerwa odpowiadajaca ˛ przerwie nie wpływa na uliniowanie i możemy ja˛ z uliniowania wykreślić. 3. Liczba wszystkich uliniowań A(N ) jest równa sumie wszystkich uliniowań sekwencji z udziałem k przerw, dla k równego od 1 do N : A(N ) = N X Ak (N ) k=1 4. Zaczynamy od lewego końca sekwencji. Po kolei tworzymy uliniowanie. Za każdym razem mamy trzy możliwości: albo (i) ulinowaniymy po jednym nukleotydzie z każdej z obu sekwencji: abii , (ii) ulinowaniymy jeden nukleotyd z pierwszej sekwencji, i przerw˛e w drugiej: a−i , albo (iii) ulinowaniymy nukleotyd z drugiej sekwencji i przerw˛e w pierwszej: − bi . 5. W danym uliniowaniu jest w każdej sekwencji k przerw, a wi˛ec długość uliniowania L = N + k. Ulinowanienie jest permutacja˛ trzech typów zdarzeń: (i), (ii) lub (iii). Liczba zdarzeń typu (ii) i (iii) wynosi k, liczba zdarzeń typu (i) zaś N − k (k liter w każdej sekwencji nie b˛edzie przypisana literom drugiej sekwencji, lecz przerwom; pozostanie N − k). W sumie jest N + k zdarzeń. 6. Liczba możliwych permutacji b˛edzie wi˛ec liczba˛ możliwych uliniowań dla danej liczby przerw, Ak (N ). Liczba ta dana jest wzorem Ak (N ) = (N + k)! (N − k)!k!k! 7. Zatem całkowita liczba uliniowań b˛edzie dana wzorem A(N ) = N X (N + k)! k=1 (N − k)!k!k! rogu tabeli do naszej komórki, musi mieć najwyższa˛ punktacj˛e spośród wszystkich ścieżek przebiegajacych ˛ przez nasza˛ komórk˛e. W przeciwnym wypadku ścieżka nie odpowiadałaby optymalnemu uliniowaniu. Załóżmy teraz, że wiemy skadś, ˛ jaka jest najwyższa możliwa punktacja cz˛eściowych uliniowań dla trzech komórek tabeli poprzedzajacych ˛ nasza˛ wybrana˛ komórk˛e – komórki z lewej strony, oznaczonej ai−1,j , komórki od góry (ai,j−1 oraz komórki leżacej ˛ na ukos w lewo i do góry (ai−1,j−1 ). Optymalna ścieżka, która przechodzi przez komórk˛e ai,j musi przechodzić też przez któraś ˛ z tych 11 1.2. ALGORYTMY UKŁADANIA SEKWENCJI trzech komórek. W każdym z trzech przypadków możemy policzyć, jaka b˛edzie punktacja tej ścieżki w komórce ai,j ). Jeśli ścieżka przeszła z komórki ai−1,j−1 , to jej punktacja w komórce ai,j wyniesie sum˛e punktów z komórki ai−1,j−1 i punktom, które otrzymuje si˛e za sparowanie dwóch liter sekwencji odpowiadajacym ˛ komórce ai,j . Jeśli ścieżka przyszła z lewej strony lub z góry, to b˛edzie to suma punktów odpowiednio z komórki ai−1,j lub ai,j−1 oraz karze za wstawienie przerwy w uliniowanie (rys. 1.5, b). Zatem jeśli wiemy, że poszukiwana optymalna ścieżka przechodzi przez jakaś ˛ komórk˛e, i znamy odpowiednie punktacje maksymalne dla poprzednich komórek, to możemy powiedzieć, przez które z nich ścieżka poprzednio przechodziła! Jeśli zaczniemy wi˛ec z dolnego prawego rogu, to b˛edziemy mogli prześledzić całe ustawienie wstecz do samego poczatku. ˛ Najpierw jednak trzeba policzyć dla każdej komórki owa˛ maksymalna˛ punktacj˛e – poczawszy ˛ od komórki a0,0 . Formalne przedstawienie algorytmu NWS Niech n i m b˛eda˛ odpowiednio długościami pierwszej i drugiej sekwencji. Nazwijmy podścieżka˛ si,j każdy dowolny fragment ścieżki prowadzacy ˛ od komórki (0, 0) do komórki (i, j). Optymalna˛ podścieżka˛ si,j b˛edzie podścieżka o najwyższej punktacji. Niech ai,j oznacza punktacj˛e optymalnej podścieżki przechodzacej ˛ przez komórk˛e znajdujac ˛ a˛ si˛e w i-tej kolumnie i j-ym rz˛edzie. Niech g b˛edzie kara˛ za wstawienie przerwy, ai i-ta˛ litera˛ pierwszej sekwencji, bi – i-ta˛ litera˛ drugiej, zaś m(ai , bj ) – punkacja˛ sparowania i-tej litery pierwszej sekwencji z j-ta˛ litera˛ drugiej. Pierwsza komórka – lewym, górnym rogu – b˛edzie miała wartość 0, jako poczatek ˛ uliniowania: a0,0 = 0 Poruszajac ˛ si˛e rz˛edami (albo kolumnami – wszystko jedno) przyznaje si˛e po kolei wartości komórkom z poniższego równania: ai−1,j−1 + m(ai , aj ), ai,j = max ai−1,j − g, ai,j−1 − g W przypadku komórek na brzegach tabeli (czyli a0,j i ai,0 ) możliwe jest tylko przejście z jednej komórki i b˛edzie si˛e ono zawsze wiazało ˛ z kara˛ za wprowadzenie przerwy: a0,j = a0,j−1 − g ai,0 = ai−1,0 − g Dla każdej komórki zapami˛etujemy (i) punktacj˛e optymalnej podścieżki przechodzacej ˛ przez ta˛ komórk˛e oraz (ii) z której z poprzedzajacych ˛ ja˛ komórek przyszła optymalna podścieżka. Może si˛e zdarzyć, że istnieje wi˛ecej niż jedna optymalna podścieżka – oznacza to, że możliwe − −A sa˛ różne optymalne uliniowania. Na przykład, uliniowanie A eda˛ miały (w naszym modelu) − T i T − b˛ ta˛ sama˛ punktacj˛e. Kiedy wypełniona jest już cała tabela, punktacja komórki an,m , czyli prawego dolnego rogu, to punktacja całego optymalnego uliniowania. Jeśli nie ważne jest, jak dokładnie wyglada ˛ optymalne uliniowanie, a tylko – ile ma punktów, to na tym etapie można zakończyć algorytm. Optymalne uliniowanie – lub uliniowania, jeśli jest ich wi˛ecej – uzyska si˛e śledzac ˛ zapami˛etane przejścia z komórki do komórki, i poczynajac ˛ od prawego, dolnego rogu (rys. 1.6). 12 ROZDZIAŁ 1. ULINIOWANIA SEKWENCJI A T T G A 0 ↓ −0.5 ↓ −1 ↓ −1.5 ↓ −2 ↓ −2.5 A T G G A → −0.5 & 1 ↓ 0.5 ↓ 0 ↓ −0.5 & ↓ −1 → −1 → −1.5 → −2 → 0.5 & 2 & ↓ 1.5 ↓ 1 ↓ 0.5 → 0 → −0.5 → −2.5 & → −1 → 1.5 & ↓ → 1 & 2.5 ↓ 2 → 1 & ↓ → 0.5 & → 2 & ↓ → 1.5 A T → 0.5 & ↓ → 0 T G → 1.5 & 3 A 0 ↓ −0.5 ↓ −1 ↓ −1.5 ↓ −2 ↓ −2.5 A T G G A → −0.5 & 1 ↓ 0.5 ↓ 0 ↓ −0.5 & ↓ −1 → −1 → −1.5 → −2 → 0.5 & 2 & ↓ 1.5 ↓ 1 ↓ 0.5 → 0 → −0.5 → −2.5 & → −1 → 1.5 & ↓ → 1 & 2.5 ↓ 2 → 1 & ↓ → 0.5 & → 2 & ↓ → 1.5 → 0.5 & ↓ → 0 → 1.5 & 3 Rysunek 1.6: Algorytm NWS. Po lewej, tabela uliniowań wypełniona maksymalna˛ punktacja˛ podścieżek przechodzacych ˛ przez komórki, oraz z zaznaczonymi strzałkami kierunkiami, z których przyszły podścieżki. Po prawej, odtworzenie optymalnego uliniowania. Dla tych dwóch sekwencji i przyj˛etych parametrów istnieje wiele optymalnych uliniowań; zaznaczono dwa z nich. Rozwini˛ecie algorytmu: jak sobie radzić z przerwami Czy bardziej prawdopodobne jest, że w toku ewolucji nastapiły ˛ trzy niezależne insercje długości jeden każda, czy też że nastapiła ˛ jedna insercja długości 3? W przedstawionym do tej pory algorytmie a2 − a1 − − a2 e punktów – a przecież dwa uliniowania: ab11 − i b2 b3 b4 b1 b2 b3 b4 sa˛ równoważne i otrzymaja˛ ta˛ sama˛ liczb˛ pierwsze z nich można wyjaśnić przynajmniej dwoma niezależnymi insercjami, do wyjaśnienia zaś drugiego wystarczy tylko jedno takie zdarzenie. Można zmodyfikować algorytm NWS tak, aby uwzgl˛edniał zależna˛ od długości punktacj˛e przerw. Wprowadza si˛e nieco zmodyfikowana˛ punktacj˛e, w której kara za przerw˛e jest dana pewna˛ funkcja˛ g(k), gdzie k to długość przerwy. Wówczas równanie na punktacj˛e optymalnej podścieżki w komórce (i, j) b˛edzie wygladało ˛ tak: ai−1,j−1 + m(ai , aj ), ai,j = max max1≤k<i {ak,j − g(i − k)}, max1≤k<j {ai,k − g(j − k)} Oznacza to, że dla każdej komórki (i, j) należy sprawdzić wszystkie komórki leżace ˛ nad nia˛ i wszystkie leżace ˛ po jej lewej stronie. W praktyce stosuje si˛e wi˛ec prosta˛ funkcj˛e na kar˛e za przerwy dana˛ wzorem g(k) = g0 + γ(k − 1) Innymi słowy, za wprowadzenie pierwszej przerwy nadaje si˛e kar˛e g0 ; każda kolejna kosztuje zaś γ. Obliczenia staja˛ si˛e wtedy znacznie prostsze. Zauważmy, że w każdej komórce należy obliczyć wyrażenie Ei,j = max1≤k<j {ai,k − g(j − k)} (a także podobne dla rz˛edów; zajmiemy si˛e jednak chwilowo tylko kolumna˛ i). Można przeformułować to wyrażenie: Ei,j = max{ai,j−1 − g0 , max2≤k<j {ai,k − g(j − k)}} Ale max2≤k<j {ai,k − g(j − k)} = max1≤k<(j−1) {ai,k − g((j − 1) − k)} = Ei,j−1 Wyrażenie Ei,j−1 zostało już przecież obliczone, kiedy przeprowadzane były obliczenia dla komórki (i, j − 1). Nie trzeba wi˛ec za każdym razem obliczać na nowo całego wyrażenia; wystarczy zapami˛etać poprzedni wynik. 13 1.3. ALGORYTMY HEURYSTYCZNE 1.2.3 Algorytm Smitha i Watermana Algorytm NWS znajduje optymalne uliniowanie globalne dwóch sekwencji. Smith i Waterman zmodyfikowali go tak, by odnajdywać optymalne lokalne uliniowania. G G T A T T G A T C G 0 ↓ 0 ↓ 0 ↓ 0 ↓ 0 ↓ 0 ↓ 0 ↓ 0 ↓ 0 ↓ 0 ↓ 0 ↓ 0 C C A A T T G A G G C → 0 ↓ → 0 ↓ → 0 ↓ → 0 ↓ → 0 ↓ → 0 ↓ → 0 ↓ → 0 ↓ → 0 ↓ → 0 & 1 ↓ 0.5 → 0 ↓ → 0 ↓ → 0 ↓ → 0 ↓ → 0 ↓ → 0 ↓ → 0 ↓ → 0 ↓ → 0 ↓ → 0 & 1 ↓ 0.5 → 0 ↓ → 0 ↓ → 0 ↓ → 0 & 1 ↓ 0.5 ↓ 0 ↓ → 0 & 1 ↓ 0.5 → 0 ↓ → 0 ↓ → 0 ↓ → 0 & 1 ↓ 0.5 ↓ 0 ↓ → 0 & 1 ↓ 0.5 ↓ → 0 & ↓ → 0 → 0 ↓ → 0 ↓ → 0 & 1 ↓ → 0.5 & 2 & ↓ 1.5 ↓ 1 ↓ → 0.5 & 2 ↓ 1.5 ↓ 1 → 0 ↓ → 0 ↓ → 0 & 1 ↓ 0.5 & → 1.5 & 3 ↓ 2.5 ↓ 2 & ↓ → 1.5 & ↓ → 1 & ↓ → 0.5 → 0 & 1 & 1 ↓ → 0.5 & ↓ → 0 → 0 → 0 & 1 & 1.5 ↓ 1 → 0 → 1 & ↓ → 0.5 → 0 & 1 & 2 ↓ 1.5 ↓ 1 ↓ 0.5 → 1.5 & → 3 → 1 & → 2.5 → 0.5 → & → & → & → & → & → & → → 3.5 & ↓ → 3 & 4.5 ↓ → 4 → 0.5 & ↓ → 0 → 1 → 2.5 & 4 ↓ 3.5 ↓ 3 ↓ 2.5 & ↓ 2 → 0.5 → 0.5 & ↓ → 0 & 1.5 ↓ 1 → 2 → 3.5 & 5 ↓ 4.5 ↓ 4 ↓ 3.5 4.5 ↓ 4 ↓ 3.5 5 4 ↓ 3.5 ↓ 3 4.5 → 0.5 → & → & → & → 1.5 ↓ 1 ↓ 0.5 ↓ 0 → 2 Rysunek 1.7: Tabela uliniowań dla algorytmu Smitha i Watermana. Zaznaczono optymalne uliniowanie lokalne, odnalezione przez algorytm. W praktyce algorytm wyglada ˛ identycznie, tyle że w komórkach, w których otrzymuje si˛e negatywna˛ punktacj˛e, wpisuje si˛e “0” (rys. 1.7). Odtworzenie uliniowania nie jest zaś rozpoczynane w prawym dolnym rogu tabeli, lecz w tym jej punkcie, w którym wyst˛epuje najwyższa w całej tabeli punktacja. Koniec uliniowania zaś nast˛epuje nie w lewym górnym rogu, lecz w pierwszej komórce, której punktacja równa jest zeru. 1.3 Algorytmy heurystyczne O ile programowanie dynamiczne w ogóle umożliwiło odnajdywanie optymalnych uliniowań dla dłuższych sekwencji, o tyle w praktyce jest ono nadal zbyt wolne, by za jego pomoca˛ np. przeszukiwać naprawd˛e duże bazy danych. Dlatego w latach dziewi˛ećdziesiatych ˛ powstały dwie słynne rodziny programów, FASTA i BLAST, które stosuja˛ algorytmy heurystyczne do odnajdywania uliniowań. Algorytm heurystyczny nie gwarantuje odnalezienia optymalnego uliniowania – rzeczywiście, w praktyce zdarza si˛e, że programy BLAST nie odnajduja˛ takowych. Jednak w wi˛ekszości zastosowań sprawdzaja˛ si˛e bardzo dobrze i sa˛ nieporównanie szybsze od rygorystycznych implementacji algorytmów NWS i pokrewnych. Zarówno FASTA, jak i BLAST służa˛ w pierwszym rz˛edzie do przeszukiwania baz danych zawierajacych ˛ sekwencje. Oba programy kolejno porównuja˛ zapytanie (“query”) ze wszystkimi sekwencjami należacymi ˛ do bazy danych (“subject”), przy czym porównanie jest właśnie heurystycznym algorytmem znajdujacym ˛ lokalne uliniowanie obu sekwencji. Wynikiem działania programów jest lista najlepszych uliniowań zapytania z sekwencjami z bazy danych. 14 ROZDZIAŁ 1. ULINIOWANIA SEKWENCJI 1.3.1 Programy rodziny FASTA Nazwa FASTA pochodzi od sformułowania “Fast Approximation to Smith-Waterman Alignment”, czyli “szybkie przybliżenie algorytmu Smitha i Watermana”. Rodzina programów FASTA fasta – program do porównywania sekwencji nukleotydowych fastx, fasty – programy porównujace ˛ sekwencje DNA z białkowa˛ baza˛ danych w ten sposób, że sekwencja DNA tłumaczona jest na białkowa˛ we wszystkich sześciu możliwych ramkach odczytu, z dopuszczeniem przesuni˛ecia ramki. tfastx, tfasty – porównanie sekwencji białkowej z baza˛ danych zawierajac ˛ a˛ sekwencje nukleotydowe, które zostaja˛ przetłumaczone na sekwencje białkowe we wszystkich sześciu możliwych ramkach odczytu. ssearch – rygorystyczna implementacja algorytmu Smitha i Watermana. Chociaż dosyć wolna, gwarantuje odnalezienie optymalnego lokalnego uliniowania. Warto z tego programu skorzystać przynajmniej w końcowej fazie poszukiwania i porównywania sekwencji. Algorytm ma dwie fazy. W pierwszej fazie zbierana jest lista słów o pewnej ustalonej długości zawartych w pierwszej sekwencji. Na przykład, sekwencja ATCGA zawiera cztery słowa o długości 2: AT, TC, CG, GA. Dla każdego słowa zapami˛etywana jest jego odległość od poczatku ˛ sekwencji. Słowa te nazywane sa˛ w terminologii FASTA “k-tuples” – w j˛ezyku polskim istnieje dźwi˛eczny odpowiednik “k-rotka”. Nast˛epnie w drugiej sekwencji poszukuje si˛e podobnych słów. Jeśli algorytm natrafi na fragment, który jest wystarczajaco ˛ podobny do pewnego słowa z pierwszej sekwencji, to zapami˛etywana jest jego pozycja, oraz wzgl˛edne przesuni˛ecie – a wi˛ec różnica mi˛edzy pozycja˛ w pierwszej i drugiej sekwencji. Na przykład, jeśli pierwsza sekwencja to GATGG, a druga to CCATGC, słowo “AT” z pozycji drugiej w pierwszej sekwencji ma pozycj˛e trzecia˛ w drugiej sekwencji; wzgl˛edne przesuni˛ecie wyniesie 1. Kolejne słowo, “TG” ma w sekwencji pierwszej pozycj˛e 3, w drugiej zaś - 4. Wzgl˛edne przesuni˛ecie jest jednak to samo, 1. Widać już, co si˛e dzieje: słowa należace ˛ w obu sekwencjach do tego samego, pozbawionego przerw, lokalnego uliniowania, b˛eda˛ miały te same wzgl˛edne przesuni˛ecia. Gdyby narysować wykres punktowy obu sekwencji, to odpowiadajace ˛ sobie słowa tworzyłyby na nim wspólna˛ przekatn ˛ a.˛ FASTA sprawdza kolejno różne wzgl˛edne przesuni˛ecia i zapami˛etuje, dla którego z nich znaleziono najwi˛ecej odpowiadajacych ˛ sobie słów. W drugiej fazie, dziesi˛eć takich regionów służy jako zaczatek ˛ dla programowania dynamicznego. Dodatkowo dokłada si˛e do nich te słowa, które chociaż nie maja˛ dokładnie tego samego wzgl˛ednego przesuni˛ecia, to jednak sa˛ wystarczajaco ˛ blisko, by brać udział w uliniowaniu. Słowa te razem tworza˛ “rejon” (w terminologii ang. programu FASTA “region”), czyli pozbawione przerw lokalne uliniowanie. Punktacja tego rejonu jest określana jako “init1 score” i można ja˛ odczytać z wyników działania programu. W dalszej koleności FASTA łaczy ˛ sasiaduj ˛ ace ˛ ze soba˛ rejony, tworzac ˛ uliniowanie zawierajace ˛ przerwy. Punktacja tego uliniowania określana jest mianem “initn”. Wreszcie stosuje si˛e programowanie dynamiczne, aby zoptymalizować uliniowanie – punktacja optymalnego uliniowania jest podawana przez program FASTA jako “opt”. 15 1.3. ALGORYTMY HEURYSTYCZNE Może si˛e zdarzyć, że program FASTA nie odnajdzie właściwego uliniowania lub jego cz˛eści. Jeśli np. porównujemy dwie sekwencje białek, które sa˛ identyczne w 50%, lecz zawieraja˛ na przemian homologiczne i nie homologiczne aminokwasy (np. sekwencje GCGANVQP i GGGINIQC), to ze wzgl˛edu na standardowa˛ wielkość słowa równa˛ 2, algorytm nie wykryje żadnej homologii. Inny skrajny przykład, to białko, w którym nastapiła ˛ długa (na ponad 20 aminokwasów) insercja. Przy defaultowej wielkości okna ustawionej na 15 algorytm nie b˛edzie w stanie połaczyć ˛ ze soba˛ obu homologicznych regionów, wskazujacych ˛ na to, że w istocie chodzi o jedno i to samo białko, zawierajace ˛ tylko w jednej z sekwencji dłuższa˛ insercj˛e. 1.3.2 Programy rodziny BLAST Nazwa “BLAST” to akronim od “Basic Local Alignment Search Tool”, czyli “podstawowe narz˛edzie do poszukiwania lokalnych uliniowań”1 . Istnieja˛ dwie główne wersje tego pakietu: jedna jest rozprowadzana przez NCBI, druga – przez Wisconsin University (WU-BLAST). Rodzina programów BLAST blastn – porównywanie sekwencji nukleotydowej z baza˛ danych zawierajac ˛ a˛ również sekwencje nukleotydowe blastp – porównywanie sekwencji białka z baza˛ danych zawierajac ˛ a˛ również sekwencje białkowe blastx – porównanie translacji sekwencji nukleotydowej we wszystkich sześciu ramkach odczytu z baza˛ danych zawierajac ˛ a˛ sekwencje białkowe tblastn – porówynanie sekwencji białkowej z translacja˛ (we wszystkich sześciu ramkach) bazy danych zawierajacej ˛ sekwencje nukleotydowe tblastx – porównanie translacji w sześciu ramkach odczytu sekwencji nukleotydowych z translacjami bazy danych zawierajacej ˛ sekwencje nukleotydowe. W dużym skrócie, algorytm programów BLAST odnajduje w dwóch sekwencjach rejony homologiczne, które nast˛epnie sa˛ rozszerzane w obu kierunkach. W algorytmie sa˛ trzy główne fazy. Wpierw tworzona jest lista słów o pewnej długości (standardowo 3 lub 4 w wypadku sekwencji aminokwasów), które daja˛ punktacj˛e wyższa˛ niż pewien ustalony próg w uliniowaniu z pierwsza˛ z porównywanych sekwencji. Nast˛epnie przeszukuje si˛e baz˛e danych w poszukiwaniu słów zebranych w pierwszym etapie. Aby umożliwić szybkie przeszukiwanie bazy, każda baza danych wykorzystywana przez programy BLAST musi być wcześniej w określony sposób sformatowana (w pakiecie NCBI BLAST służy do tego program formatdb, w pakiecie WU-BLAST zaś program xformatdb). W drugiej fazie znalezione słowa staja˛ si˛e “zalażkami” ˛ (ang. “seeds”) uliniowania: algorytm stara si˛e możliwie rozszerzyć w obie strony uliniowanie, którego poczatkiem ˛ jest odnalezione słowo. Ulinowanienie jest rozszerzane tak długo, jak długo znajdywane sa˛ jeszcze podobieństwa mi˛edzy oboma sekwencjami i rośnie punktacja uliniowania. Takie uliniowanie nazywane jest HSP (“high scoring segment pair”) i odpowiada “rejonowi” z grupy programów FASTA. Wreszcie, spośród wszystkich znalezionych HSP wybierane sa˛ te, które maja˛ najwyższa˛ i najbardziej istotna˛ statystycznie punktacj˛e – sa˛ to MSP (“maximal scoring pairs”). 1 Rzecz ciekawa: PNDPLU nie brzmi tak dobrze, jak BLAST 16 ROZDZIAŁ 1. ULINIOWANIA SEKWENCJI Na koniec prowadzone sa˛ statystyczne obliczenia aby stwierdzić, które z MSP sa˛ statystycznie istotne (o statystyce zwiazanej ˛ z uliniowaniami sekwencji b˛edzie wi˛ecej w nast˛epnym rozdziale). 1.3.3 Porównanie FASTA i BLAST Jeszcze do niedawna programy z grupy FASTA miały jedna˛ ogromna˛ przewag˛e nad programami BLAST: potrafiły odnajdować uliniowania z przerwami. Niedawno poprawiono jednak algorytm BLAST, tak że i on znajduje tego typu uliniowania. BLAST jest niewatpliwie ˛ jest szybszy, dzi˛eki temu, że cz˛eść obliczeń dotyczacych ˛ tylko bazy danych wykonywana jest a priori. Proces ten nazywa si˛e formatowaniem bazy danych i wystarczy go przeprowadzić tylko raz dla każdej bazy danych. FASTA, z drugiej strony, potrafi być znacznie czulszy. 1.4 Pytania i ćwiczenia 1. Czy w przykładzie ... ma znaczenie, czy mówimy o sekwencji białka, czy nukleotydu? 2. (**) Wyprowadź wzór na liczb˛e wszystkich możliwych permutacji trzech zbiorów zawieraja˛ cych odpowiednio a, b i c elementów: (a + b + c)! a!b!c! a2 −a3 2 a3 3. (***) W przykładzie ... dwa w gruncie rzeczy identyczne uliniowania: ab11−b oraz ab11b−a 2 b3 2 −b3 traktowane sa˛ jako odr˛ebne permutacje. Jak oszacować liczb˛e możliwych uliniowań, jeśli takie dwa uliniowania potraktujemy jako jedno? 4. Zaznacz na tabeli uliniowań takie uliniowania: ATG-GA || || AT-TGA ATGGA---------ATTGA A-TG-GA | || -AT-TGA AGTTGATC i AGTCCTTC. Skorzystaj przy tym z macierzy tożsamości i przyjmij kar˛e -2 pkt. za wstawienie każdej przerwy. 5. (*) Korzystajac ˛ z dowolnego znanego Ci j˛ezyka programowania, napisz program korzystajacy ˛ z algorytmu NWS do uliniowania dwóch sekwencji. Jeśli masz taka˛ możliwość, to porównaj jego wyniki z wynikami działania programu ssearch z pakietu FASTA. 6. Sprawdź w słowniku, co oznacza słowo “blast”. 17