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

Podobne dokumenty